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

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

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

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

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

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

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

Внешний веб-сервер - nginx, так что, может быть, мне следует искать именно его? Похоже, что в nginx access_log нет ничего о том, куда был проксирован запрос.


person pkaeding    schedule 01.09.2009    source источник


Ответы (1)


Мы столкнулись с подобными проблемами на reevoo.com некоторое время назад. Взгляните на результирующий пост в блоге.

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

person cwninja    schedule 01.09.2009
comment
Спасибо, это дало мне нужную информацию. (К сожалению, это была не та информация, которую я хотел, но это уже другая история :) - person pkaeding; 02.09.2009