Первые запросы мучительно медленные
Я использую Redmine под IIS, используя Zoo. Установка была выполнена с использованием установщика веб-платформы, а конфигурация по умолчанию не была затронута.
Однако при использовании приложения первые запросы выполняются очень долго (иногда более одной минуты). В течение этого времени ruby.exe вызывает некоторую нагрузку на процессор (около 15%).
Согласно файлам журнала, это в основном представления, которые отнимают много времени:
Started GET "/redmine/login" for IP at 2012-09-04 09:54:08 +0200
Processing by AccountController#login as HTML
Rendered account/login.html.erb within layouts/base (42150.5ms)
Completed 200 OK in 43508ms (Views: 43008.5ms | ActiveRecord: 0.0ms)
Rendered account/login.html.erb within layouts/base (42435.1ms)
Completed 200 OK in 44100ms (Views: 43523.3ms | ActiveRecord: 0.0ms)
После начальной задержки дальнейшее время запроса полностью приемлемо.
Есть идеи, как ускорить время прогрева?
2 ответа
У меня возникла аналогичная проблема с Redmine, который я установил на сервере общего хостинга. В моем случае это среда linux/apache, но у меня точно такие же симптомы.
Поскольку это общий хостинг, я не могу контролировать всю среду. Я потратил немного времени, пытаясь это исправить, а затем прибег к простому обходному пути. Я создал задачу каждые 15 минут, чтобы получить домашнюю страницу Redmine:
*/15 * * * * /usr/bin/curl http://redmineserver.example.com/ --stderr - > /dev/null
Это делает мой трюк, по-видимому, 15 минут достаточно часто, чтобы система загружала все и была готова к действию.
Смотрите этот вопрос на ServerFault. Вы должны быть в состоянии установить PassengerPoolIdleTime
где-то внутри вашего конфигурационного файла, но при использовании IIS в качестве веб-сервера я не уверен, где это происходит.
Ок.. попробуйте эту тему вместо этого. Я не знаю, насколько вы контролируете свой сервер, но, надеюсь, это укажет вам правильное направление.
Если форумы недоступны, это наиболее актуальная часть:
Что касается IdleTimeout и большой задержки при перезапуске, я просто думаю, что такое поведение может быть вызвано функцией отключения из-за пулов приложений IIS, но не IdleTimeout в fcgiext.ini. Пожалуйста, откройте свойство пула приложений сайта. Проверьте время простоя по умолчанию. Значение по умолчанию составляет 20 минут, что означает: если каждые 20 минут не поступает ни одного запроса, IIS отключит этот пул, и любой новый входящий запрос после этого обязательно встретит "задержку" для ожидания перезапуска рабочего процесса IIS для пула приложений и перезагрузите все.