返回信息流后端基于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
这是一条镜像帖。来源:北邮人论坛 / java / #66335同步于 2022/3/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
【问题】压测过程中连接数增加到4000后,每秒请求量骤降?求问
shaojunying
2022/3/19镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
一般和你框架的连接模型和机器内存有关 比如有的连接用的连接池 池子满了之后 会建立大量短链接 拖累系统,还有就是检查内存 内存可能太小了,正常一个链接信息4kb左右 加上你业务的线程占用空间 可能导致内存不够
【 在 guoyuanchao 的大作中提到: 】
: 一般和你框架的连接模型和机器内存有关 比如有的连接用的连接池 池子满了之后 会建立大量短链接 拖累系统,还有就是检查内存 内存可能太小了,正常一个链接信息4kb左右 加上你业务的线程占用空间 可能导致内存不够
请问这有什么排查方法吗?也不知道应该如何搜索[ema1]
【 在 shaojunying 的大作中提到: 】
: 请问这有什么排查方法吗?也不知道应该如何搜索
你用的Java框架的话 可以找个压测组件比如jmeter,可以搜一下怎么用。
另外压测主要是结合机器的cpu 内存这些负载情况观察的,你这个提供的信息有点少,
说一下我的想法哈 不一定正确:
我感觉你这个压测没有开启keep alive,这个需要开启一下。可以使用jmeter一键开启。
还有就是tomcat配置文件,spring boot内嵌的tomcat需要配置的,是这个文件spring-configuration-metadata.json,文件里server.tomcat开头的配置项都可以配置,具体可以百度一下看看各项代表了啥。最后配置的时候需要参考机器的硬件配置,比如4核8G的机器,最大线程数800,最小工作线程数为100这样;
【 在 guoyuanchao 的大作中提到: 】
: 你用的Java框架的话 可以找个压测组件比如jmeter,可以搜一下怎么用。
: 另外压测主要是结合机器的cpu 内存这些负载情况观察的,你这个提供的信息有点少,
: 说一下我的想法哈 不一定正确:
: ...................
这里配置tomcat的方法不一定就是这个配置文件哈,看你项目具体用到的啥配置文件,然后类似的去配置最大线程数啥的
【 在 guoyuanchao 的大作中提到: 】
: 这里配置tomcat的方法不一定就是这个配置文件哈,看你项目具体用到的啥配置文件,然后类似的去配置最大线程数啥的
非常感谢您的回复。
这个问题是我在Mac上压测出现的,我最后使用Linux主机压测就没有这个问题了。所以我猜测可能是Mac上默认配置的问题。后续压测我都在Linux上进行的了。