zoukankan      html  css  js  c++  java
  • swoole cpu占用很高 porcess

    情况:未开启swoole cup占用20%,开启swoole cup占用飙升到70

    各种排查...哪怕是放以下那么点代码,cpu立马飙升70%

     $SystemNoticeProcess = new SwooleProcess(function($process) use ($server) {
             
    
            });
    
            // 推送系统通知SystemNotice
            $this->server->addProcess($SystemNoticeProcess);

    解决办法:增加sleep休眠

     $SystemNoticeProcess = new SwooleProcess(function($process) use ($server) {
    
                sleep(1);  // cup降低最佳方案
    
            });
    
            // 推送系统通知SystemNotice
            $this->server->addProcess($SystemNoticeProcess);

    扩展:

     $SystemNoticeProcess = new SwooleProcess(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

  • 相关阅读:
    语言基础
    进制转换
    Java基础相关
    Java基础了解
    php 条件查询和多条件查询
    php 增删改查练习
    php 用封装类的方法操作数据库和批量删除
    php 用面向对象的方法对数据库增删改查
    php 面向对象的方式访问数据库
    OOP 7大原则
  • 原文地址:https://www.cnblogs.com/wesky/p/12108594.html
Copyright © 2011-2022 走看看