猿问

跪求!Swoole 中关于 swoole_websocket_server 压测的问题。跪求!

Swoole版本:4.3
对swoole_websocket_server压测时,使用这个方法可行吗?
//代码片段
$this->concurrency=100;
$this->request=100000;
go(function(){
for($c=$this->concurrency;$c--;){
$cli=new\Swoole\Coroutine\Http\Client('127.0.0.1',9501);
$ret=$cli->upgrade('/');
if($ret){
while($this->requested<$this->request){
$this->push($cli);
$cli->recv();
}
}
}
});
官方使用的swoole_http_client在4.3版本移除了。
另外:
使用Task或不使用Task,压测时会有很大区别吗,目前本地测着区别不大,是这样的吗?
//使用Task代码
$this->serv->on('message',function($serv,$frame){
$serv->task($frame->data);
});
$this->serv->on('task',function($serv,$task){
foreach($serv->connectionsas$fd){
$connectionInfo=$serv->connection_info($fd);
if(isset($connectionInfo['websocket_status'])&&intval($connectionInfo['websocket_status'])==3){
$serv->push($fd,$task->data);
}
}
});
//未使用Task代码
$this->serv->on('message',function($server,$frame){
foreach($this->serv->connectionsas$fd){
$connectionInfo=$this->serv->connection_info($fd);
if(isset($connectionInfo['websocket_status'])&&intval($connectionInfo['websocket_status'])==3){
$server->push($fd,$frame->data);
}
}
});
机器信息
Mac上安装的ParallelsDesktop虚拟机
系统:Ubuntu16.04.3LTS
内存:
数量:1
核数:2
CPU:
数量:1
大小:2G
Concurrency:100Requestnum:100000Successnum:100000Totaltime:8.9364Requestpersecond:11190
请前辈们指点,这个量级有问题吗?
感谢!
HUX布斯
浏览 351回答 2
2回答

手掌心

对,使用协程和协程websocket客户端进行压测。性能可以进行优化,建议关闭websocket_mask,这个比较耗费CPU你的机器本身只有1核,还要同时运行客户端和服务器端,1万QPS已经非常好了。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答