Как я могу отслеживать интенсивные запросы ЦП в mod_perl?

Используя Apache 2.2 и mod_perl в Ubuntu 8.04, у меня есть несколько приложений на сервере. Использование Apache в режиме префорка. Обычно все работает хорошо, но время от времени я вижу, как один из процессов Apache использует 100% ЦП.

На сервере есть несколько веб-сайтов с собственными виртуальными хостами, а также есть сервер SVN, работающий через Apache.

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


person Community    schedule 03.02.2010    source источник


Ответы (3)


Devel::NYTProf в настоящее время является главным профилировщиком для Perl, с Devel::NYTProf::Apache для простого профилирования приложений mod_perl.

См. Тим Банс: NYTProf v2 — значительное улучшение профилировщиков perl для красивого обзора с картинками.

К сожалению, Devel::NYTProf не входит в состав Ubuntu Hardy. (Он предварительно упакован в Jaunty, Karmic, Lucid и более поздних версиях.) Вы можете использовать некоторые хитрые трюки для установки пакетов из этих дистрибутивов, установки из CPAN или просто обновления ;-)

person Community    schedule 03.02.2010
comment
как только я узнаю, какие запросы вызывают проблему, я могу попытаться профилировать их, но добавление профилировщика ко всем запросам звучит как плохая идея - по крайней мере, на первый взгляд - person szabgab; 05.02.2010

Если у вас есть большой репозиторий subversion и авторизация на основе пути, включенная в вашей конфигурации apache, вы увидите некоторые длительные задачи apache с высокой загрузкой ЦП. Вероятно, вы также будете получать жалобы от пользователей subversion на медленные коммиты и обновления, а также на ошибки 503 и жалобы subversion на усеченные ответы SSL. Если это так, я бы сделал подрывную деятельность своим главным подозреваемым.

person Community    schedule 03.02.2010

Используйте пользовательский формат журнала или напишите PerlLogHandler, который записывает информацию о запросе вместе с PID и информацией об использовании ресурсов. См., например, колонку Web Techniques 48 Рэндала.

person Community    schedule 04.02.2010