Laravel очередь приводит к переполнению числа соединений с БД? - PullRequest
0 голосов
/ 15 февраля 2020

Я использую t2.medium (2 ядра, 4 ГБ ОЗУ) AWS PostgreSQL RDS в качестве базы данных с Laravel в качестве бэкэнда. Драйвер очереди является базой данных. У меня только 2k ежедневных пользователей.

Вчера система вышла из строя из-за полного подсчета подключений к БД без прогноза. После расследования я выясняю, что причина в очередях. Они порождаются слишком много, так как база данных может потреблять.

Вот мой конфиг супервизора:

[program:mydata-worker]
command=php xxxxxx/artisan queue:work database --tries=5 --timeout=300
process_name=%(program_name)s_%(process_num)02d
autostart=true
autorestart=true
user=www-data
numprocs=15

Этот запрос учитывается в 1h , здесь ждут 66k очередей, но только 3k потребляется:

connsction overflows

Это в хорошем состоянии, все очереди потребляются normal_condition

Вопрос здесь:

  1. Правильный ли мой supervisord.conf? Должен ли я уменьшить «--tries = 5» или «numprocs»?
  2. Безопасно ли удалять таблицу «заданий», когда количество соединений достигает порога (например, 100)?
  3. Можете ли вы дать мне подсказку для проектирования многопоточных безопасных серверов?

1 Ответ

0 голосов
/ 18 марта 2020

Я исправил это, потому что «ДЛЯ УПАДТЕ» он заблокировал рабочих. Я объяснил в этом посте => https://medium.com/@taitran.apps / как исправить-queue-deadlock-in- laravel -using- postgres -74c1523203b6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...