Что может заставить рабочий процесс IIS бесконтрольно расти? - PullRequest
1 голос
/ 30 октября 2009

Что может вызвать неконтролируемый рост рабочего процесса IIS?

У меня есть ошибка, при которой, если я беру страницу и загружаю ее, иногда она не добавляет памяти, небольшого объема памяти (250–2 МБ) или действительно большого объема памяти (10–30 МБ). Я понятия не имею, что является причиной этого, но если вы можете провести мозговой штурм, что может вызвать такое поведение, я был бы признателен.

EDIT

Так что, очевидно, вы не можете кешировать элемент управления .net и извлечь его из кеша без утечки памяти. Я пытался кэшировать элемент управления меню, который заставлял память увеличиваться при каждом запросе из кэша. решение в этом случае состояло в том, чтобы поместить элементы в массив или словарь и кеш, которые вместо этого воссоздали бы элементы, когда страница была загружена. Это устранило утечку памяти, и поэтому у меня было так много проблем с ее обнаружением.

Ответы [ 3 ]

3 голосов
/ 30 октября 2009

Не зная ничего о том, что делает ваше приложение, трудно сказать, есть ли у вас утечка или это просто естественная рабочая память для приложения.

Возможно, вы захотите запустить свое приложение через профилировщик памяти, такой как Ants Memory Profiler от Red Gate

Также У Тесс Феррандез есть несколько замечательных статей о отладке утечек памяти .

1 голос
/ 30 октября 2009

Может быть целый кусок причин. Возможно, вы создаете дополнительные сеансы, поэтому он выделяет больше памяти, вы не очищаете некоторые объекты в вашем коде, должен получить новое соединение с БД, а не использовать его повторно, выделяя дополнительную память для поглощения ожидаемой нагрузки (если вы нажимаете через некоторое время вы можете начать активную работу с памятью?) ... и этот список можно продолжить.

Это сожрано одинаково каждый раз? Процесс растет и растет?

Это всего лишь одна страница? Вы создали пустую страницу и контролировали, если это делает то же самое? Затем попытался закомментировать различные части вашей проблемной страницы, чтобы увидеть, можете ли вы изолировать программу? Включил трассировку и смотрел, как звонят и когда? Есть подозреваемый?

Множество мест, где можно посмотреть ... Также возможно опубликовать это на serverfault.com.

0 голосов
/ 30 октября 2009

Можете ли вы опубликовать код для страницы или хотя бы фрагмент загрузки и инициализации страницы?
Вот несколько шагов, которые могут помочь:

  1. Переменные результаты, о которых вы сообщаете в первой точке вызова, могут быть проверкой статических ресурсов или методов, которые вы вызываете, и проверять, какие процессы инициализации могут быть связаны с ними.
  2. Убедитесь, что ваше приложение является единственным, использующим этот конкретный пул приложений, и что больше никто не подключен.
  3. Убедитесь, что у вас нет отладочных инструментов. Проверьте свой код и убедитесь, что все циклы завершаются правильно, что у вас нет рекурсии и все ресурсы всегда доступны и локальны.

Возможно, это поможет, но трудно сказать, не видя код, который вы используете.

Приветствия

...