Мне просто интересно, почему перезапуск пула приложений IIS 7 считается хорошей практикой? Я знаю, что он очистит сиротские ресурсы, такие как потоки или состояние сеанса, но как другой веб-сервер справляется с этой проблемой? Должен ли разработчик/администратор java перезапускать weblogic/websphere/apache/tomcat так часто, чтобы очистить мусор в памяти?Нужно ли нам перезагрузить пул приложений IIS 7? То же самое относится к другим веб-серверам?
ответ
Обычно он используется для компенсации плохого программирования. Иногда ваши, иногда и третьи стороны, зависят от используемых вами библиотек.
И, как и во всех рекомендациях, лучше всего взглянуть на вашу конкретную среду, чтобы убедиться, что это действительно необходимо, прежде чем делать это.
Начать с профилирования приложения. Простым способом является просто позволить ему работать некоторое время под нагрузкой. Ищите такие вещи, как использование памяти или она постоянно растет?
Если он продолжает расти, вам нужно будет настроить IIS на повторное использование так часто и исправить свое приложение. Если он вырастет до точки, тогда опустится, тогда вы должны быть в порядке. Удостоверьтесь, что вы проверяете даже крайности вашего приложения.
С IIS можно иметь не управляемый код - лучшим примером является COM-объект, который не ведет себя хорошо. В результате вы можете настроить IIS на периодическую переработку процессов, чтобы обеспечить утечку памяти, которая может возникнуть с таким кодом.
Это не обязательно делать. Вы можете исключить пороги перезагрузки, если вы не хотите перезапускать процессы.
Если эта идея не существует на других серверах, возможно, это связано с тем, что другие серверы допускают только управляемый код.
Согласен. На мой взгляд, это административная задача, а не программист, хотя есть API для таких вещей. Http://msdn.microsoft.com/en-us/library/microsoft.web.administration.applicationpool.aspx –