WorkerMan 阻塞导致队列服务不稳定的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WorkerMan 阻塞导致队列服务不稳定的问题相关的知识,希望对你有一定的参考价值。
参考技术A WorkerMan 提供了 php start status 命令来查看当前程序的状态通过 status 发现处理订单的队列任务不在列表中,也就是说业务逻辑中有阻塞的情况。
开启一个进程打断点来排除问题。
发现本来每秒一次的任务却3秒才完成一次请求,而且断点在获取队列任务之后,那么问题一定是出现在获取队列任务的时候了。
原来 getQueueMessage 方法在接收消息时设置了两秒的延迟时间
一次请求需要两秒等待,而定时器每一秒就需要启动一个新的任务,也就是说前面的任务还没有进行完,后面的任务已经在排队了,这样就导致了阻塞。
去掉两秒等待在看 status
果然可以了
stop 的时候也没有 exit with status 9 的错误了
以上是关于WorkerMan 阻塞导致队列服务不稳定的问题的主要内容,如果未能解决你的问题,请参考以下文章
一旦队列填满,WebSocket 异步发送可能会导致发送阻塞