Karp 的技术博客

swoole 遇到一个定时器 tick 的问题

WARNING Worker_reactor_try_to_exit() (ERRNO 9101): worker exit timeout, forced termination

今天突然发下 swoole 报错了,后来找资料才发现原来是定时器的问题,大概是说定时器设置的时间大于进程退出的时间了

官方文档 :


worker exit timeout, forced to terminate

发现形如以下报错:

WARNING swWorker_reactor_try_to_exit (ERRNO 9012): worker exit timeout, forced to terminate
Copy to clipboardErrorCopied

表示在约定的时间 (max_wait_time 秒) 内此 Worker 没有退出,Swoole 底层强行终止此进程。

可使用如下代码进行复现:

use Swoole\Timer;

$server = new Swoole\Server('127.0.0.1', 9501);
$server->set(
    [
        'reload_async' => true,
        'max_wait_time' => 4,
    ]
);

$server->on('workerStart', function (Swoole\Server $server, int $wid) {
    if ($wid === 0) {
        Timer::tick(5000, function () {
            echo 'tick';
        });
        Timer::after(500, function () use ($server) {
            $server->shutdown();
        });
    }
});

$server->on('receive', function () {

});

$server->start();

php swoole

版权属于:karp
作品采用:本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
更新于: 2024年10月18日 07:10
8

目录

来自 《Swoole WARNING Worker_reactor_try_to_exit() (ERRNO 9101): worker exit timeout, forced termination》
774 文章数
0 评论量
9 分类数
779 页面数
已在风雨中度过 9年277天3小时47分