1

每次在我的服务器上运行延迟作业时,我都可以在 postgreSQL 中看到一个新的空闲进程。运行select * from pg_stat_activity;我可以看到:

DEALLOCATE pdo_stmt_00000018

我试图理解,htop每次延迟的排队作业刚刚运行时,就会出现多行(以及 中的多一个进程)。

我的工作的最后一行是:

$this->log->info("Invitation {$this->invitation->uuid} sent");

我可以在我的日志中看到这一点,所以一切都很好,但是之后它并没有清理干净。每次使用“DEALLOCATE pdo_stmt_00000xxx”时,我都有一个空闲进程。

我能做些什么来避免这个问题?这是什么原因造成的?

这是我的主管配置:

[program:laravel-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/my/site/artisan queue:work --queue=invitation,default --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/path/to/my/logs/worker.log

旁注:空闲进程在我运行时消失php artisan queue:restart

4

1 回答 1

0

我找到了一个(快速而肮脏的)解决方法。在我的作业句柄函数的末尾添加这个:

\DB::disconnect();
sleep(1);

在 Laravel 上打开了一个问题:https ://github.com/laravel/framework/issues/18384

于 2017-03-17T09:41:49.163 回答