BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #66335同步于 2022/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

【问题】压测过程中连接数增加到4000后,每秒请求量骤降?求问

shaojunying
2022/3/19镜像同步12 回复
后端基于SpringBoot的demo,如下所示: @RestController public class MyController { @GetMapping("") public String index() { return "hello"; } } 之后使用wrk的如下代码进行压力测试: wrk -t4 -c4000 -d10s http://localhost:8080 - connections 为2000时,平均延迟为165ms,平均每秒请求量44643; - connections 为3000时,平均延迟为64ms,平均每秒请求量31041; - connections 为4000时,平均延迟为311ms,平均每秒请求量130; 求问为什么会出现这样的问题? connections 为3000时的输出: Running 10s test @ http://localhost:8080 4 threads and 3000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 64.13ms 115.90ms 1.25s 97.64% Req/Sec 11.60k 6.14k 20.95k 62.31% 313682 requests in 10.11s, 35.33MB read Socket errors: connect 0, read 47507, write 0, timeout 3000 Requests/sec: 31041.59 Transfer/sec: 3.50MB connections 为4000时: Running 10s test @ http://localhost:8080 4 threads and 4000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 311.04ms 397.58ms 1.80s 85.95% Req/Sec 74.21 68.50 242.00 82.03% 1338 requests in 10.26s, 154.18KB read Socket errors: connect 0, read 55596, write 0, timeout 0 Requests/sec: 130.47 Transfer/sec: 15.03KB
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
guoyuanchao机器人#1 · 2022/3/19
一般和你框架的连接模型和机器内存有关 比如有的连接用的连接池 池子满了之后 会建立大量短链接 拖累系统,还有就是检查内存 内存可能太小了,正常一个链接信息4kb左右 加上你业务的线程占用空间 可能导致内存不够
shaojunying机器人#2 · 2022/3/20
【 在 guoyuanchao 的大作中提到: 】 : 一般和你框架的连接模型和机器内存有关 比如有的连接用的连接池 池子满了之后 会建立大量短链接 拖累系统,还有就是检查内存 内存可能太小了,正常一个链接信息4kb左右 加上你业务的线程占用空间 可能导致内存不够 请问这有什么排查方法吗?也不知道应该如何搜索[ema1]
shaojunying机器人#3 · 2022/3/20
并且我试了Go的Gin框架,也是在1000、2000个连接时一切正常,但是到达4000时QPS突然从几万降到几百
guoyuanchao机器人#4 · 2022/4/1
【 在 shaojunying 的大作中提到: 】 : 请问这有什么排查方法吗?也不知道应该如何搜索 你用的Java框架的话 可以找个压测组件比如jmeter,可以搜一下怎么用。 另外压测主要是结合机器的cpu 内存这些负载情况观察的,你这个提供的信息有点少, 说一下我的想法哈 不一定正确: 我感觉你这个压测没有开启keep alive,这个需要开启一下。可以使用jmeter一键开启。 还有就是tomcat配置文件,spring boot内嵌的tomcat需要配置的,是这个文件spring-configuration-metadata.json,文件里server.tomcat开头的配置项都可以配置,具体可以百度一下看看各项代表了啥。最后配置的时候需要参考机器的硬件配置,比如4核8G的机器,最大线程数800,最小工作线程数为100这样;
guoyuanchao机器人#5 · 2022/4/1
【 在 guoyuanchao 的大作中提到: 】 : 你用的Java框架的话 可以找个压测组件比如jmeter,可以搜一下怎么用。 : 另外压测主要是结合机器的cpu 内存这些负载情况观察的,你这个提供的信息有点少, : 说一下我的想法哈 不一定正确: : ................... 这里配置tomcat的方法不一定就是这个配置文件哈,看你项目具体用到的啥配置文件,然后类似的去配置最大线程数啥的
shaojunying机器人#6 · 2022/4/1
【 在 guoyuanchao 的大作中提到: 】 : 这里配置tomcat的方法不一定就是这个配置文件哈,看你项目具体用到的啥配置文件,然后类似的去配置最大线程数啥的 非常感谢您的回复。 这个问题是我在Mac上压测出现的,我最后使用Linux主机压测就没有这个问题了。所以我猜测可能是Mac上默认配置的问题。后续压测我都在Linux上进行的了。
shilishi机器人#7 · 2022/4/29
本身mac自身资源和连接数都是有限的
shaojunying机器人#8 · 2022/4/30
【 在 shilishi 的大作中提到: 】 : 本身mac自身资源和连接数都是有限的 确实,感觉和Linux还挺不一样的
woooods机器人#9 · 2022/4/30
看一下进程打开文件数量有没有限制,查看一下TCP连接情况