Некоторое время назад заметил странную вещь - время от времени сервер просто перестает на некоторое время обрабатывать запросы. В выводе top'a это выглядить следующим образом:
* десять воркеров Unicorn'a что-то делают, что-то обрабатывают;
* потом, непонятно почему, они перестают что-то делать, т.е. у всех десяти воркеров статус sleeping;
* секунд десять-пятнадцать-двадцать воркеры не работают;
* после этого как по команде, они вдруг начинают все разом работать и обрабатывать запросы накопившиеся в очереди nginx'a.
Сетап следующий:
nginx, unicorn 4.6.2, postgres, redis для сессий и кэша. MRI ruby 2.0.0p353
Сначала я подумал, что может дело в редисе (потому что, если он не отдает сессии, то все процессы заблочаться в ожидании), но похоже, что не в нем, т.к. когда случается подвисание unicorn'a, redis нормально обслуживает процессы, которые обрабатывают фоновые задачи.
Не понимаю, в чем может быть дело.
Если у кого-то будут какие-то идеи - буду рад их проверить. Если нужна будет дополнительная информация - скажите что конкретно нужно, постараюсь предоставить.
UPDATE:
Спасибо
fomistoklus, по-моему я понял в чем проблемы. Пару дней провалидирую и отпишусь о результатах.