Я использую 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 потребляется:
Это в хорошем состоянии, все очереди потребляются
Вопрос здесь:
- Правильный ли мой supervisord.conf? Должен ли я уменьшить «--tries = 5» или «numprocs»?
- Безопасно ли удалять таблицу «заданий», когда количество соединений достигает порога (например, 100)?
- Можете ли вы дать мне подсказку для проектирования многопоточных безопасных серверов?