孤狼逐月 2023-10-30 16:20 采纳率: 100%
浏览 10
已结题

后端并发压力测试报错了

以下是服务器资源配置和数据库配置

在进行压测的时候每次到7000左右线程的时候就报错,哪位帮帮忙看看什么问题

img

tomcat配置

img

mysql配置

img

mongo配置

img

后端代码


    /**
     * 保存json内容
     *
     * @param pluginsReqVo
     */
    @PostMapping("/saveJsonContent")
    public AjaxResult saveJsonContent(@RequestBody PluginsReqVo pluginsReqVo) {
        asyncPluginsService.saveJsonContent(pluginsReqVo);
        return AjaxResult.success();
    }

@Data
public class PluginsReqVo {
    private String stuId;
    //是否断网重连
    private String isDisconnectReconnect = "N";

    private List<PluginsContent> pluginsContentList;
}


@Data
@TypeAlias("pluginsContent")
@Document(collection = "plugins_content")
public class PluginsContent {

    @Id
    private String id;

    @Field(value = "act_id")
    private String act_id;
    @Field(value = "act_tool")
    private String act_tool;
    @Field(value = "act_type")
    private String act_type;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Field(value = "act_time")
    private Date act_time;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS", timezone = "GMT+8")
    private Date act_time_millisecond;
    @Field(value = "act_content")
    private JSONObject act_content;
    @Field(value = "creat_time")
    private Date creat_time = DateUtils.getNowDate();

    PluginsContent(@JsonProperty("act_time") Date act_time,
                   @JsonProperty("act_time_millisecond") Date actTimeMillisecond) {
        this.act_time = act_time;
        if (actTimeMillisecond != null){
            act_time = null;
            this.act_time = actTimeMillisecond;
        }
    }
}

#错误

img

jemter 配置

img

img

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-30 18:05
    关注

    【以下回答由 GPT 生成】

    根据提供的信息,可能有几个原因导致压力测试过程中报错:

    1. 服务器资源配置不足,无法处理并发请求。
    2. 数据库配置不合理,无法支持高并发的读写操作。
    3. Tomcat配置不合理,无法处理大量并发请求。
    4. 代码逻辑问题,可能存在线程安全性的问题。

    首先,我们需要排除服务器资源配置和数据库配置的问题。根据提供的信息,我们无法得知具体的服务器资源配置和数据库配置,如果你有提供这些配置的详细信息的话,可以检查是否有足够的内存、CPU等资源,并且数据库是否设置了足够的连接池大小来处理高并发情况。

    关于Tomcat的配置,可以尝试调整以下参数来提高性能和处理并发请求的能力:

    1. 调整Tomcat的最大线程数。在Tomcat的配置文件(通常是server.xml)中找到以下配置,并适当增加maxThreads的值: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxThreads="10000" /> 增加maxThreads的值可以同时处理更多的并发请求。

    2. 调整Tomcat的线程池配置。在Tomcat的配置文件中找到以下配置,并根据实际情况进行调整: <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="500" minSpareThreads="100"/> 增加maxThreads的值可以提高并发请求的处理能力。

    3. 调整Tomcat的连接器配置。在Tomcat的配置文件中找到以下配置,并根据实际情况进行调整: <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" acceptCount="200" /> 增加acceptCount的值可以提高并发请求的排队能力。

    关于代码逻辑的问题,根据提供的代码,暂时无法确定是否存在线程安全性的问题。可以尝试以下步骤来排查和解决可能存在的问题:

    1. 检查asyncPluginsService的实现,确保它是线程安全的。如果不是线程安全的,可以考虑使用同步块或其他线程同步机制来解决该问题。

    2. 检查@PostMapping("/saveJsonContent")方法中对pluginsReqVo对象的处理是否线程安全。如果涉及到共享变量的操作,需要考虑使用线程同步机制来保证线程安全性。

    最后,但并非最不重要的,建议在进行压力测试前,先进行性能测试,观察系统在正常负载下的表现,并进行必要的调优和优化。另外,还可以使用一些性能监测工具,例如JProfiler和VisualVM,以便更好地理解系统的性能状况和瓶颈所在。

    如果以上方法都没有解决问题,我无法给出具体的解决方案。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 10月30日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表