用ab压测接口,-c 100的话很快,300、500、800甚至1000就开始慢了,90%或95%的耗时都比较快,就是总有一小部分请求的耗时会偏高,导致QPS变低的很厉害,这是为什么呢。
补充下,是在linux下试的
____________________分割线
是在linux下对本机压测的,整体就nginx+phpfpm
就压一个php文件,里面就echo一句hello world。
c 100的时候QPS大概在1400-1500左右,请求都维持100ms内。
但c提升到300以上,90%的请求依然可以在80ms左右,但就是有极少数请求会在2000、3000ms以上,整个QPS均值就跌下来了,就只有五六百。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个要看具体情况。本机测试,还是测试某个远端服务器? 服务器是云服务器还是自己机房里面的?从测试机到服务器的路径上有没有防火墙?带宽多少?服务器架构和组网是什么样的?有作负载分担吗?如果做了的话是根据什么来分担的?...
此外,你说QPS变低得很厉害,到底多低?
百度的ab测试出的QPS也不是很高:
-c 100 表示1次发出100个请求.
对于采用epoll等事件驱动的服务比如Nginx,能够开门把请求先放进来,谁先准备好就先处理谁,不用排队.
而没有事件驱动的服务比如prefork MPM下的Apache,则只能把请求堵在门口的backlog队列里排队,逐个处理.
这时你要增加Apache的吞吐量,你就应该把backlog队列配置得更大些(默认511),以及增开工作进程.
进程数不宜开太多,否则CPU在大量进程间来回切换分配资源也会产生开销导致性能不佳.
也要你本地的并发连接能到啊,太大本地就直接报错了,或是没响应了