2017-03-16 93 views
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

+0

似乎要解除准备好的语句,以便能够重复使用该名称pdo_stmt_00000xxx,并没有结束连接?也许它意味着运行在用户池模式设置为事务的pgbouncer上?.. –

回答