Как я могу быть уверен, что каждый процесс в моем 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
чтобы увидеть, что конкретный дворняга обрабатывает.