企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 压力测试 [TOC] ## 注意事项 > 不同的硬件平台和软件环境,测试出的实际数据并不相同,因此仅建议进行基准测试,在相同的环境下测试不同软件系统之间的性能差距 * 编译`Swoole`必须关闭`debug`,使用`gcc -O2`或更高优化级别 * 关闭屏幕输出,否则打印屏幕的`echo`操作会使服务器阻塞 * 在多核的机器上开启合适的进程数量,进程数量不足将无法发挥全部硬件计算能力 * 检查程序中是否存在`PHP`错误,`PHP`错误处理会使服务器的处理能力大幅下降 ## 优化选项 * 使用`SWOOLE_BASE`模式,可以减少`2`次`IPC`开销,提升性能 * 启用端口复用,可大幅提高短连接服务的性能,需要`Linux-3.10`或更高版本内核 * `Http`服务器请关闭`gzip`压缩,可节省服务器`CPU`的开销 * `Http`服务器请使用`KeepAlive`长连接测试,避免短连接的`IO`开销降低性能差异比例 * 移除没有实际逻辑的回调设置,如程序中并未使用`onConnect`和`onClose`回调,在代码中不要设置这`2`项回调 ~~~ Swoole\Async::set(array('enable_reuse_port' => true)); $serv = new Swoole\Server("0.0.0.0", 9502, SWOOLE_BASE); $serv->set(array( 'worker_num' => 8, )); $serv->on('Receive', function (swoole_server $serv, $fd, $from_id, $data) { $serv->send($fd, "Swoole: " . $data); }); $serv->start(); ~~~ ## 其他提示 * 使用`ab`测试工具时,请开启`-k`长连接 * `ab`测试工具不支持`Http-Chunk`,在`Http\Server`中请勿使用`response->write`