1、现象

系统架构是使用jetty容器,终端通过nginx代理到后端服务,但是今天早上用户高并发的时候,用户返回异常,通过查看服务端的日志发现只有部分请求到达了后端,然后查看nginx的日志信息,发现存在大量请求返回404。

2、内网测试

对于这种问题,第一反应是jetty的最大线程数设置的太小了,所以决定在内网中测试。

  1. 修改etc/jetty.xml文件中的maxThreads配置,修改为20,以便内网重现
    shell命令操作HDFS

  2. 使用Jmeter工具,设置线程数为100,不断的调用该接口,查看日志信息。果然发现出现大量的404问题。当然同时也是有成功的200请求。
    shell命令操作HDFS

  3. 为了验证,重新修改jetty的最大线程数为800。然后继续以100个线程调用该接口。
    shell命令操作HDFS

  4. 查看日志信息,发现如下,不再出现404提示
    shell命令操作HDFS

3、总结

一般使用java+jetty开发的程序,jetty默认配置的最大线程数是200,当时当高并发的时候,如果存在某个接口耗时较长,那么线程数就可能不够用,此时有两种方式,一种是优化接口,另一种修改配置也不失为一种有效方案。这两种都没法实现的话,那么就要考虑调整架构,实现负载均衡等,这个另说。

相关文章:

  • 2021-10-12
  • 2021-12-12
  • 2022-12-23
  • 2021-07-14
  • 2021-08-26
  • 2021-11-23
  • 2021-08-11
  • 2022-02-06
猜你喜欢
  • 2021-10-17
  • 2022-01-08
  • 2021-11-23
  • 2022-01-23
  • 2021-11-20
  • 2021-08-06
相关资源
相似解决方案