美文网首页
WorkerMan 阻塞导致队列服务不稳定的问题

WorkerMan 阻塞导致队列服务不稳定的问题

作者: php_johson | 来源:发表于2017-10-25 12:59 被阅读480次

    当前处理订单架构是这样的:
    用户下单,产生队列
    利用workerman的定时任务监控队列(40个进程 每秒执行一次)
    定时任务里处理订单逻辑完成下单,向app发送通知
    但是定时任务一直不稳定

    WorkerMan 提供了 php start status 命令来查看当前程序的状态

    通过status 发现处理订单的队列任务不在列表中,也就是说业务逻辑中有阻塞的情况。

    开启一个进程打断点来排除问题。

    发现本来每秒一次的任务却3秒才完成一次请求,而且断点在获取队列任务之后,那么问题一定是出现在获取队列任务的时候了。

    原来getQueueMessage方法在接收消息时设置了两秒的延迟时间

    一次请求需要两秒等待,而定时器每一秒就需要启动一个新的任务,也就是说前面的任务还没有进行完,后面的任务已经在排队了,这样就导致了阻塞。
    去掉两秒等待在看status

    果然可以了

    stop的时候也没有exit with status 9的错误了

    相关文章

      网友评论

          本文标题:WorkerMan 阻塞导致队列服务不稳定的问题

          本文链接:https://www.haomeiwen.com/subject/znrqpxtx.html