码迷,mamicode.com
首页 > 其他好文 > 详细

swoole cpu占用很高 porcess

时间:2019-12-27 18:04:37      阅读:413      评论:0      收藏:0      [点我收藏+]

标签:reac   this   foreach   获取   cti   each   code   通知   sys   

情况:未开启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

 

swoole cpu占用很高 porcess

标签:reac   this   foreach   获取   cti   each   code   通知   sys   

原文地址:https://www.cnblogs.com/wesky/p/12108594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!