swoole cpu占用很高 porcess

摘要:
情况:未开启swoolecup占用20%,开启swoolecup占用飙升到70各种排查...哪怕是放以下那么点代码,cpu立马飙升70%$SystemNoticeProcess=newSwooleProcess(function($process)use($server){});//推送系统通知SystemNotice$this-˃server-˃addProcess($SystemNoticeP

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

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

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

解决办法:增加sleep休眠

 $SystemNoticeProcess = newSwooleProcess(function($process) use ($server) {
            sleep(1);  //cup降低最佳方案

        });
        //推送系统通知SystemNotice
        $this->server->addProcess($SystemNoticeProcess);

扩展:

 $SystemNoticeProcess = newSwooleProcess(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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JS判断图片是否加载完成三种方式服务器80端口映射到8080端口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

c# Socket心跳试验,自定义发送包 和 使用KeepAlive

我记录了我心跳的位置,但WireShark无法检测到正在发送的消息,主要是因为发送的数据大小为0。如果网络电缆被拔掉,下次检测到心跳时就会报告错误。虽然这种方法可以检测套接字是否断开,但它不是很好,响应也不及时。当使用KeepAlive时,WireShark通常会检测到它不停地向Socket服务器发送消息,即心跳检测。图:通过三次握手(前三次握手)建立连接后...

vue+jspdf+html2canvas导出PDF文件

没有废话。首先,查看最终打印结果。我说最后打印的pdf文件看起来像这样。pdf文件的分页是通过设置jspdf实现的,但我暂时无法对文件内容进行分页。因为我们首先将需要打印的元素转换为画布,然后将画布转换为图像,然后将图像转换为pdf文件。...

PowerQuery清理非文件名字符(清除指定列表中的所有字符)

在左侧导航窗格的空白区域右击,依次找到空白查询项接下来的思路是:遍历列表SearchList中的所有项,依次清理Data表中所有想要处理的列。第三个参数是一个函数:它告诉List.Accumulate函数,在每一次使用SearchList中某一项操作Data表时,其操作的方式是如何的。...

如何控制el-image预览图片的大小

Src=“scope.row.carlouseUrl”:1。从“element-ui/packages/image/src/image-viewer”2导入图像查看器importerImageViewer。寄存器组件:3。使用组件<El table columnlabel=“旋转图表”width=“220px”>...

uniapp之页面间传递和接收数组

uni-app如何在页面之前发送和传递数组?如果阵列是直接发送和传递的,则收到的消息如下所示。无法获取更多的对象值。接收数组对象的参数。您可以首先将数组转换为JSON字符串,然后在将其传递到页面后将其解析为JavaScript对象。...

安装qmake与环境变量解析

如果你已经有了qmake,可以跳过这里,请看10分钟学会使用qmake。手动安装qmake在手工连编Qt之前,下面这些环境变量必须被设置:QMAKESPEC这个必须设置为你所使用的系统的平台和编译器的组合。当编译完成时,qmake已经可以使用了。这里对添加环境变量时,是在path里头添加,还是new一个变量有点疑惑。而如果是new的话,当我们在为程序添加路径...