У меня есть приложение, которое кэширует данные из базы данных в HttpRuntime.Cache. Когда я загружаю это приложение с 1000 пользователями в секунду, некоторые значения в кеше становятся поврежденными.HttpRuntime.Cache повреждает данные при высокой нагрузке на Windows Azure
Например, у меня есть страница, которая просто запрашивает базу данных для ее содержимого. Сначала он проверяет кеш и, если он доступен, получает данные оттуда.
DataSet ds;
var cachedData = HttpRuntime.Cache["homepage"];
if (cachedData == null) {
ds = getDataSet("SQL query...");
addToCache("homepage", ds);
}
else {
ds = (DataSet)cachedData;
}
Это прекрасно работает до примерно 100 пользователей в секунду, но когда я начинаю стресс-тестирование до 1000 пользователей некоторые из полей в кэшированных таблицах возврата DBNull.Value. После тестирования, когда я проверяю, что находится в кеше, я вижу, что теперь поля DBNull.Value.
Я включил ведение журнала и проверил, что DataSet добавляется только в кеш один раз, но каким-то образом он повреждается во время стресс-тестирования.
Кто-нибудь видел это раньше или имеет некоторые указания на то, что происходит не так? Он размещается под Windows Azure с выделенными рабочими ролями для кеширования.