截图是我的webman运行日志。使用了workerman/redis-queue,想问下大佬们 这个pid:1683 worker[plugin.webman.redis-queue.redis_consumer_shot:2073678] exit 是什么机制导致的退出的。运行时间过长吗,还是说运行了reload命令?如果是运行了reload命令,12-02日以前没有退出
运行reload 命令后进程如果超过2秒还没退出(可能在执行比较慢的业务),会被主进程强行 kill -9, 就有 exit with status 9 的日志。这个时间可以通过 config/server.php 里的 stop_timeout设置, 默认2秒。你可以根据你的情况调整它,需啊哟restart重启生效。
exit with status 9
config/server.php
stop_timeout
老大 我想在更新了代码之后 不让队列重启应该怎么设置呢,因为我的队列任务可能执行的时间最长会超过五分钟,如果设置stop_timeout的时长的话 设置多久合适呢
假设我的队列一个任务的时间执行时长最长为五分钟,stop_timeout 是否设置大于300秒久能规避这个问题
最大的任务执行多久就设置多久,最长5分钟就设置5分钟。 不想让队列自动reload 设置 config/plugin/webman/redis-queue/process.php 里的reloadable为false
config/plugin/webman/redis-queue/process.php
reloadable
return [ 'consumer' => [ 'handler' => Webman\RedisQueue\Process\Consumer::class, 'count' => 8, 'reloadable' => false, // <==== 这里 'constructor' => [ // 消费者类目录 'consumer_dir' => app_path() . '/queue/redis' ] ] ];
这种情况执行reload不会自动更新,需要restart才能更新队列业务逻辑。
好的 谢谢大佬
运行reload 命令后进程如果超过2秒还没退出(可能在执行比较慢的业务),会被主进程强行 kill -9,
就有
exit with status 9的日志。这个时间可以通过config/server.php里的stop_timeout设置,默认2秒。你可以根据你的情况调整它,需啊哟restart重启生效。
老大 我想在更新了代码之后 不让队列重启应该怎么设置呢,因为我的队列任务可能执行的时间最长会超过五分钟,如果设置stop_timeout的时长的话 设置多久合适呢
假设我的队列一个任务的时间执行时长最长为五分钟,stop_timeout 是否设置大于300秒久能规避这个问题
最大的任务执行多久就设置多久,最长5分钟就设置5分钟。
不想让队列自动reload 设置
config/plugin/webman/redis-queue/process.php里的reloadable为false这种情况执行reload不会自动更新,需要restart才能更新队列业务逻辑。
好的 谢谢大佬