Полезно ли использовать RAM-диск для обслуживания IIS ASP.net на веб-сервере VM?

Настроить:

Windows Server 2008 R2, размещенный на виртуальной машине HyperV, выделил 3 ГБ памяти.

Я установил RAMDisk (емкость 512 МБ более чем достаточно для наших требований), используя ImDisk на этом виртуальном веб-сервере и выделил ему 3 ГБ ОЗУ (размещенным приложениям не требуется более ~768 МБ при большой нагрузке).

Первоначально каталог WebRoot находился в общем сетевом ресурсе, который работал достаточно, но заметил, что при большой нагрузке это привело к заметному увеличению трафика локальной сети к серверу общего доступа к сети (который, я считаю, обращается к сетевому ресурсу, чтобы обслуживать веб-страницы для моих пользователей). - должно ли это происходить?).

Поскольку виртуальная машина размещена в отказоустойчивом кластере, диск C:\ виртуальной машины хранится в iSCSI SAN, поэтому не было никакого выигрыша в производительности (проверено это) при хранении папки WebRoot на диске C:\.

Поэтому я решил поместить контент на RAMDisk, что, конечно, показало хорошее улучшение с точки зрения времени доступа, особенно. Исходный контент будет по-прежнему храниться на сетевом ресурсе, но будет синхронизироваться с RAM-диском каждые 24 часа.

У любого есть веские основания полагать, что это:

А) Не стоит того?

или, что более важно,

Б) Быть плохой идеей!?

Критика оценена, как положительная, так и отрицательная!

2 ответа

Решение

IIS не будет кэшировать контент с общего сетевого ресурса, поэтому у вас была плохая производительность. Однако он должен кэшировать файлы при хранении на локальном диске. Тот факт, что ваш сервер является виртуальным, а хранилище диска хоста находится на диске iSCSI, не должен влиять на способность IIS кешировать файлы.

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

Я был бы против использования оперативного диска, если у вас нет крайнего случая, когда тип контента, который вам нужно кэшировать, не вписывается в кеш IIS. Мне нравится правило KISS.;-)

Использование RAM-диска в виртуальной машине будет примерно таким же, как использование RAM-диска на физической машине.

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

Когда вы используете RAM-диск, вы, по сути, говорите, что заранее знаете, какие файлы должны быть доступны очень быстро, и что они не будут недавно использованными. Если они на самом деле являются недавно использованными файлами, то, используя диск ОЗУ, вы упускаете возможность более гибко использовать память, что, возможно, повышает производительность в других областях.

Время, необходимое для чтения файла из фактического хранилища (не диска ОЗУ) в ВМ, вероятно, несколько больше, чем это было бы на той же машине без виртуализации. Поэтому вам нужно задать себе этот вопрос:

Я использую большой мощный виртуальный хост с действительно хорошей подсистемой хранения, или я использую ту же машину, которую я использовал для IIS, но теперь я виртуализирую сервер IIS?

Если это первое, то задержка чтения файла может не иметь большого значения. Если это второе, задержка чтения файла будет больше в виртуальной машине, и, следовательно, RAM-диск может иметь больше смысла.

Кроме того, вам нужно задать себе еще один вопрос:

Я размещаю только одну виртуальную машину на этом сервере, или я делю этот хост с несколькими рабочими нагрузками?

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

Другие вопросы по тегам