0
每次在我的服务器上运行延迟作业时,我都可以在postgreSQL中看到一个新的空闲进程。运行select * from pg_stat_activity;
我可以看到:Laravel作业在DEALLOCATE上留下闲置的postgresql进程
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
似乎要解除准备好的语句,以便能够重复使用该名称pdo_stmt_00000xxx,并没有结束连接?也许它意味着运行在用户池模式设置为事务的pgbouncer上?.. –