PHP 7.3.4
Swoole 4.4.2
kill -15 master_pid
INFO Server is shutdown now
WARNING swWorker_reactor_is_empty (ERRNO 9012): worker exit timeout, forced to terminate
Worker 进程内的 定时器 或者 event::add 句柄未清理导致。
Worker 进程内的 定时器 或者 event::add 句柄未清理导致。
同遇到问题,但 WorkerStop 事件总是在超时后才会回调,但没有地方清理。
swoole-4.4.2
php-7.2.20
测试代码
$http = new Server('0.0.0.0', 9998);
$http->set(['daemonize' => false, 'dispatch_mode' => 2, 'worker_num' => 4, 'enable_coroutine' => true]);
$http->on('Request', function (Request $request, Response $response): void {
$response->end(time());
});
$http->on('WorkerStart', function (Server $server): void {
Timer::tick(3000, function () {
});
echo "WorkerStart#{$server->worker_pid}\n";
});
$http->on('WorkerStop', function (Server $server): void {
$data = date('Y-m-d H:i:s');
echo "[{$data}]WorkerStop#{$server->worker_pid}\n";
});
$http->on('Shutdown', function () {
echo "[]ServerShutdown\n";
});
$http->start();
输出信息
WorkerStart#7420
WorkerStart#7422
WorkerStart#7423
WorkerStart#7421
[2019-07-26 10:49:14 #7414.4] INFO Server is shutdown now
[2019-07-26 10:49:44 *7420.0] WARNING swWorker_reactor_is_empty (ERRNO 9012): worker exit timeout, forced to terminate
[2019-07-26 10:49:44]WorkerStop#7420
[2019-07-26 10:49:44 *7422.2] WARNING swWorker_reactor_is_empty (ERRNO 9012): worker exit timeout, forced to terminate
[2019-07-26 10:49:44 *7423.3] WARNING swWorker_reactor_is_empty (ERRNO 9012): worker exit timeout, forced to terminate
[2019-07-26 10:49:44]WorkerStop#7422
[2019-07-26 10:49:44]WorkerStop#7423
[2019-07-26 10:49:44 *7421.1] WARNING swWorker_reactor_is_empty (ERRNO 9012): worker exit timeout, forced to terminate
[2019-07-26 10:49:44]WorkerStop#7421
[]ServerShutdown
问题解决,监听 WorkerExit 事件,完成清理即可正常退出。
Most helpful comment
问题解决,监听 WorkerExit 事件,完成清理即可正常退出。