System.Web.Caching.Cache истекает из-за нехватки памяти? - PullRequest
0 голосов
/ 04 февраля 2020

Я устранял проблему, которая, я уверен, касается кэша на сервере IIS. Данные элемента случайно удаляются из нашего рабочего кэша IIS. У удаляемых элементов есть значение ключа, составленное с использованием уникального идентификатора пользователя, чтобы гарантировать уникальность ключа кэша.

Наше приложение, которое работает. NET 4.7.2 использует большой объем вставки в кэш с помощью метода Вставка (String, Object, CacheDependency) из System.Web.Caching.Cache

Согласно Microsoft do c, подпись этого метода вставляет кэш без истечения срока действия, если пул приложений не перезапускается или не страдает от нехватки памяти.

Я просматриваю журналы средства просмотра событий ОС и Я не вижу никакого идентификатора события , который указывает, что мой пул приложений перезагружается, потому что он достигает лимита памяти в частных байтах.

Мы планируем перезапускать наш пул приложений ежедневно в течение дня недели в 4 часа утра; Вы видите это на графике памяти ниже, однако большую часть времени наша проблема с предметом, потерянным из кеша, возникала в дневное время.

enter image description here

Мой следующий Действия по устранению неполадок - добавление дополнительной памяти на сервер. Интересно, IIS w3wp.exe испытывает недостаток памяти, хотя у нас все еще есть свободная память на сервере?

Есть ли что-то, что вы можете увидеть, что может повлиять на нашу работу? срок службы элемента кэша?

1 Ответ

1 голос
/ 04 февраля 2020

Начните с проверки параметра logeventonrecyle, чтобы убедиться, что переработка пула приложений регистрируется. См .: https://docs.microsoft.com/en-us/iis/configuration/system.applicationhost/applicationpools/add/recycling/

Возможно, что другие процессы на машине используют память, и вы теряете элементы из-за "или страдает от нехватки памяти"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...