Как я могу быть уверен, что каждый процесс в моем mongrel_cluster обрабатывает запросы?

У меня есть приложение rails, которое занимает некоторое время для обработки определенных запросов (поскольку оно обрабатывает загрузку изображений). В настоящее время у меня есть три беспорядочных процесса в кластере, и я ожидаю, что один из двух других обработает второй запрос, если первый занят.

Однако этого, похоже, не происходит. Если я смотрю вывод из top на сервере я могу определить, когда он изменяет размер изображения, поэтому, если я попытаюсь нажать на приложение с помощью простого запроса (который обычно завершается быстро), он, похоже, подождет, пока завершится длительный запрос.

Когда я просматриваю файлы log/mongrel.xxxx.log, все, что я вижу, это вывод приложения при запуске.

Как я могу проверить, какой процесс на самом деле обрабатывает каждый запрос?

Могу ли я заставить их ублюдков регистрировать каждый запрос (даже если это просто временная метка и что-то вроде "GET /path/to/resource")?

Любые идеи, почему кластер не может делить нагрузку в первую очередь?

Интерфейсным веб-сервером является nginx, так что, возможно, именно здесь я должен искать? Кажется, в nginx access_log нет ничего о том, куда был отправлен запрос.

1 ответ

Решение

Мы столкнулись с похожими проблемами на http://www.reevoo.com/ некоторое время назад. Посмотрите на итоговое сообщение в блоге.

Особый интерес представляет использование mongrel_proctitle для диагностики проблемы. Это позволит ps aux чтобы увидеть, что конкретный дворняга обрабатывает.

Другие вопросы по тегам