在本地测试的 控制器方法中的测试代码如下
public function index(): Response
{
$text = file_get_contents(public_path().'/web.txt'); //web.txt是一个2M的文件
return response($text);
}
使用ab压测 结果如下
ab -n 100 -c 10 (100个请求10并发) QPS=147/单请求67ms/并发性6.7ms
ab -n 1000 -c 100 (1000个请求100并发) QPS=160/单请求623ms/并发性能6.2ms
ab -n 10000 -c 1000 (1w个请求1000并发)QPS=70/单请求14s/并发性能14ms
ab -n 100 -c 10 (100个请求10并发) QPS=58/单请求170ms/并发性能17ms
ab -n 1000 -c 100 (1000个请求100并发) QPS=128/单请求777ms/并发性能7.7ms
ab -n 10000 -c 1000 (1w个请求1000并发)QPS=73/单请求13s/并发性能13ms
不知道是不是测试代码有问题
这是IO瓶颈
用sleep模拟并发阻塞好一点。现代硬盘来说,读取2M的文件数据是很快的。基本不存在IO阻塞。
Swoole在不阻塞的情况下用协程会导致多次CPU上下文切换消耗。
好的 感谢回答