gpt4 book ai didi

Laravel 作业在 DEALLOCATE 上留下一个空闲的 postgresql 进程

转载 作者:行者123 更新时间:2023-11-29 13:49:56 25 4
gpt4 key购买 nike

每次延迟作业在我的服务器上运行时,我都可以在 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

时,空闲进程消失了

最佳答案

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

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

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

关于Laravel 作业在 DEALLOCATE 上留下一个空闲的 postgresql 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42838840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com