压力测试
注意事项
不同的硬件平台和软件环境,测试出的实际数据并不相同,因此仅建议进行基准测试,在相同的环境下测试不同软件系统之间的性能差距
- 编译
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