首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
cpu使用率快速飙升,task任务不继续进行?求解
我再打开top观察当worker来的数据大量增加时,cpu的使用率就急剧飙升到100%,然后程序就卡死了,扔进去的总数和出来的总数不一致,一旦产生偏差cpu使用率就开始上升直到满载,且数据端数据停止后,task也不再继续处理,怎么解? 应该是task处理不过来worker来的请求造成。如何解决这个问题呢? 我尝试了扔到队列进程中去处理,还是一样。 还是说我的任务处理程序有问题? 请教各位! public function onReceive($serv, $fd, $form_id, $data) { $hexStr=bin2hex($data); $this->atomic0->add(1); $serv->task(['data'=>$hexStr,'fd'=>$fd]); …… } public function onTask($serv, $task_id, $from_id, $data ) { $hexStr=$data['data']; $token=$this->client->get($data['fd'], 'token'); $data = $this->protocol->parsein($hexStr,$token);//解析数据------- if(!isset($data['data']) || !isset($data['header'])) return; $this->atomic0->sub(1); $this->atomic1->add(1); echo "%out-:".$this->atomic1->get()."|-yu".$this->atomic0->get()."\n"; }
发布于5年前 · 11 次浏览 · 来自
提问
1
1
我再打开top观察当worker来的数据大量增加时,cpu的使用率就急剧飙升到100%,然后程序就卡死了,扔进去的总数和出来的总数不一致,一旦产生偏差cpu使用率就开始上升直到满载,且数据端数据停止后,task也不再继续处理,怎么解? 应该是task处理不过来worker来的请求造成。如何解决这个问题呢? 我尝试了扔到队列进程中去处理,还是一样。 还是说我的任务处理程序有问题? 请教各位! public function onReceive($serv, $fd, $form_id, $data) { $hexStr=bin2hex($data); $this->atomic0->add(1); $serv->task(['data'=>$hexStr,'fd'=>$fd]); …… } public function onTask($serv, $task_id, $from_id, $data ) { $hexStr=$data['data']; $token=$this->client->get($data['fd'], 'token'); $data = $this->protocol->parsein($hexStr,$token);//解析数据------- if(!isset($data['data']) || !isset($data['header'])) return; $this->atomic0->sub(1); $this->atomic1->add(1); echo "%out-:".$this->atomic1->get()."|-yu".$this->atomic0->get()."\n"; }
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2019-08-31
无
无敌小笼包
同样情况。。。。
赞
0
回复
2020-03-13
卡大大
使用共享内存限流,防止任务太多处理不过来了
赞
0
回复
微信公众号
热门内容
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。