情况:未开启swoole cup占用20%,开启swoole cup占用飙升到70
各种排查...哪怕是放以下那么点代码,cpu立马飙升70%
$SystemNoticeProcess = new Swoole\Process(function($process) use ($server) {
});
// 推送系统通知SystemNotice
$this->server->addProcess($SystemNoticeProcess);
解决办法:增加sleep休眠
$SystemNoticeProcess = new Swoole\Process(function($process) use ($server) {
sleep(1); // cup降低最佳方案
});
// 推送系统通知SystemNotice
$this->server->addProcess($SystemNoticeProcess);
扩展:
$SystemNoticeProcess = new Swoole\Process(function($process) use ($server) {
// 获取队列长度
$i = $this->redis()->llen('SystemNotice');
// 客户端连接数>=1
if(count($this->server->connections)>=1) {
// 获取第一个元素
$redis_list = $this->redis()->Lpop('SystemNotice');
if ($redis_list) {
foreach ($this->server->connections as $conn) {
//$this->server->push($conn,json_encode(['type' => 'market','date' => $show_market_list]));
$this->server->push($conn, $redis_list);
// sleep(1) //cup会有所降低,但依然很高
}
}
}
sleep(1); // cup降低最佳方案
});
// 推送系统通知SystemNotice
$this->server->addProcess($SystemNoticeProcess);
这算是swoole process的一个bug
{{item.user_info.nickname ? item.user_info.nickname : item.user_name}}
作者 管理员 企业
{{itemf.name}}
{{itemc.user_info.nickname}}
{{itemc.user_name}}
回复 {{itemc.comment_user_info.nickname}}
{{itemf.name}}