Я твердо убежден, что использование оборудования для решения программных проблем - не лучшая политика. Поэтому, когда заметил несколько проблем с памятью на одном из наших серверов (в настоящее время работает с 2 гигабайтами), я отследил его до использования System.Web.HttpRuntime.Cache. Хотя для пары сайтов это имело смысл, выбрасывая 50 сайтов, которые все используют System.Web.HttpRuntime.Cache, начали рушиться стены.
Без опции внешнего сервера кэширования я рассматриваю для изменения кода, чтобы использовать статические классы или синглтоны для глобального хранения данных (другой вариант - делать дополнительные запросы к базе данных).
Мне не совсем ясно, будут ли какие-либо изменения, поскольку данные все еще находятся "в памяти", и нам, возможно, просто потребуется добавить больше памяти на сервер.
Существенно ли больше издержек при использовании System.Web.HttpRuntime.Cache над одноэлементными или статическими классами, и каковы некоторые рекомендуемые подходы для решения этой проблемы?
- Обновление -
Наблюдая за текущим использованием кеша файловой памяти , я заметил этот скачок числа при посещении некоторых сайтов в одном пуле приложений. Это число увеличилось до 1 000 000 (я предполагаю, что это байты). Я замечаю, что это число со временем начинает уменьшаться по мере увеличения, а затем уменьшения Active Flushed Entries .
Как я могу избавиться от этого быстрее, так как проблемы возникают, когда это число велико в нескольких пулах приложений?
Вместо того, чтобы просто удалять кеширование (что, как предлагается, вероятно, не самая лучшая идея), просто установка более короткого времени истечения для кэшированных объектов может дать лучшие результаты?