2014-10-30 2 views
0

Я разрабатываю приложение asp.net, которое должно искать запись из примерно 5 миллионов записей (около 4 ГБ данных). Клиент ищет более высокую производительность и решил использовать кэш памяти. Но я сталкиваюсь с проблемой при загрузке данных в кеш памяти из asp.net. Я попытался изменить настройки пула приложений и сделал виртуальную память как 0, частную память - 0 .. Ничего не получилось. Он загружает штраф до 1,5 ГБ и исключает из памяти исключения. Нет проблем, когда я перетаскивал данные с помощью консольного приложения, сняв флажок «32 бит» в настройках сборки в свойствах приложения. Моя проблема с asp.net. Я использую рамочную работу .net 4.0 с 4-х ядерными серверами, объем памяти на сервере составляет около 49 ГБ. Я также попытался включить 32-разрядный запуск в режиме 64 в пуле приложений. Но ничего не изменилось. Не могли бы вы предложить мне, если есть какое-либо решение.Максимальный лимит памяти в Asp.net

+5

Вам лучше ускорить запрос базы данных, чем думать о кешировании всех данных. –

+2

Как насчет использования чего-то, предназначенного для полнотекстового поиска (что, как я полагаю, вы хотите), например Lucene.net? – sisve

+1

Я согласен, что это должно быть сделано в БД. Если вы представляете запрос, который используете, чтобы найти схему записи и таблицы, возможно, мы можем вам помочь. – Magnus

ответ

0

Как уже упоминалось, Джон: запрос 5.000.000 записей - это работа БД, а не код. Если вы правильно настроите БД (пусть БД использует память как кеш, верные индексы, исполняемый SQL-запрос), я бы сказал, что вероятность 99,9% БД будет намного быстрее, чем все, что вы можете создать в ASP.NET.

В любом случае, если вы ДЕЙСТВИТЕЛЬНО хотите сделать это наоборот, вам нужно создать 64-битный процесс.
Контрольный список для этого, что (из моей головы - нет никакой гарантии на полноту):

  • компиляции (все части) решения, как «Any CPU» или «x64»
  • запустить IIS на 64- битный процессор ОС (который должен быть в случае с 49 Гб оперативной памяти доступной)
  • Установите Application-пул для работы в качестве 64-битного процесса без ограничения памяти: Пулы
    • Применение -> «Ваш бассейн» - > Дополнительные настройки ...
      -> Включить 32-разрядное приложение -> False
      -> Частный Лимит памяти (KB) -> 0
      -> Ограничение виртуальной памяти (KB) -> 0
+1

Или, возможно, кеш работает как собственный процесс из IIS. – Magnus

0

Спасибо вам, ребята. Я согласен, что могу сделать это в своей БД. Я обрабатываю огромный объем запросов в секунду. Мой запрос БД похож: выберите a, b, c, d, e из таблицы1, где id = первичный ключ ... Это очень простой и эффективный запрос .. хотя это эффективно .. он не дает требуемой производительности. Поэтому мы решили использовать кеш. Теперь мы решили проблему, создав службу Windows (которая создает кэш прокси и хостов) и веб-приложение отдельно. веб-приложение внутренне вызывает эту службу Windows. Она работает сейчас. Спасибо за все предложения.

Смежные вопросы