Nginx + Passenger + Rails 3 Процессы в стойке зависают - PullRequest
0 голосов
/ 20 декабря 2010

У меня есть поддерживаемое MySQL приложение Rails 3.В настоящее время у меня есть проблемы с масштабированием операций чтения в базе данных, и я работаю над их независимым исправлением.

Тем временем, поскольку выполнение определенных запросов к базе данных занимает много минут, Passenger запускает несколько процессов Rack (до указанного предела), но все они ждут / зависают в ожидании базы данных.

В определенный момент nginx отказывается принимать больше соединений.

Есть ли способ, с помощью которого я могу сказать Пассажиру прервать его делегированные вызовы Rails и освободить ресурсы, чтобы он мог прослушивать входящие запросы?

Спасибо.

1 Ответ

0 голосов
/ 21 декабря 2010

Если вы обрабатываете запросы в запросах , которые занимают много минут, вы делаете это неправильно.

Запросы должны быть максимально быстрыми.Несколько минут недопустимо.Рассмотрите возможность выгрузки долго выполняющихся запросов в Delayed :: Job, чтобы они могли работать в фоновом режиме, а не блокировать другие запросы.

Кроме того, я не знаю, какой запрос вы выполняете, но если он занимает много минут , возможно, вы захотите проанализировать их.

...