У меня есть приложение, которое работает на CGI. Я перенес его в mod_perl2 (используя apache2 :: compat) и переписал файл cgi в обработчик mod_perl. Странно, но производительность, которую я получаю из-за mod_perl, слишком затенена задержкой в журналировании.
Механизм ведения журнала в приложении похож на logger-> logmsg (msg)
регистратор :: logmsg
{
мой $ msg = смещение;
открыть LOGFILE, ">> logfile";
распечатать LOGFILE $ msg
закрыть LOGFILE;
}
Приложение выполняет много журналирования и контролируется различными уровнями журналирования. Когда я отключаю ведение журнала, транзакция работает на 80% быстрее в mod_perl, чем в cgi (база кода такая же. Я просто использую обработчик для mod_perl и скрипт шлюза для cgi). когда я включаю приложение для ведения журнала на mod_perl работает на 80% медленнее.
Из журналов видно, что тот же модуль журнала занимает 0,01 секунды для добавления сообщения MSG в файл при запуске как скрипт cgi и 0,03 секунды при запуске обработчика thro mod_perl.
Я пробовал разные методы, такие как использование STDOUT и перенаправление одного и того же в файл журнала, использование метода request_obj-> log и т. Д., Но я не могу преодолеть время, затрачиваемое cgi. Есть ли что-то, что я делаю не так с этим подходом?
Почему файловая операция в 3 раза медленнее при выполнении через сценарии mod_perl на том же сервере apache.
Любой указатель высоко ценится.
Спасибо.