Настроить:
Windows Server 2008 R2, размещенная на виртуальной машине HyperV, выделила 3 ГБ памяти.
Я установил RAMDisk (емкость 512 МБ более чем достаточно для наших требований), используя ImDisk на этом виртуальном веб-сервере и выделил ему 3 ГБ ОЗУ (размещенным приложениям не требуется более 768 МБ при большой нагрузке).
Первоначально каталог WebRoot находился на общем сетевом ресурсе, который работал достаточно хорошо, но при большой нагрузке это привело к заметному увеличению трафика LAN на сервер совместного использования сети (который, как я полагаю, получает доступ к общему сетевому ресурсу для обслуживания веб-страниц для моих пользователей. - должно ли это происходить?).
Поскольку виртуальная машина размещена в отказоустойчивом кластере, диск C: \ виртуальной машины хранится в iSCSI SAN, поэтому не было никакого повышения производительности (проверено) при сохранении папки WebRoot на диске C: \.
Поэтому я решил поместить контент на RAMDisk, который, конечно, показал хорошее улучшение, особенно с точки зрения времени доступа. Исходный контент по-прежнему будет храниться на сетевом ресурсе, но будет синхронизироваться с RAM-диском каждые 24 часа.
У любого есть веские основания полагать, что это:
А) Не стоит?
или, что более важно,
Б) Быть плохой идеей !?
Критика приветствуется, как положительная, так и отрицательная!
IIS не будет кэшировать контент из общего сетевого ресурса, поэтому у вас низкая производительность. Однако он должен кэшировать файлы при хранении на локальном диске. Тот факт, что ваш сервер виртуальный, а дисковое хранилище хоста находится на диске iSCSI, не должен влиять на способность IIS кэшировать файлы.
Я не могу представить себе, что ramdisk даст вам преимущество в производительности по сравнению с собственным кэшированием дисков IIS, исключая любые крайности после первого запроса.
Я был бы против использования RAM-диска, если только у вас нет крайнего случая, когда тип контента, который вам нужно кэшировать, не соответствует кешу IIS. Мне нравится правило KISS. ;-)
Использование RAM-диска в виртуальной машине делает примерно то же самое, что и RAM-диск на физической машине.
Windows (и в этом отношении почти любая другая ОС) будет использовать любую дополнительную доступную оперативную память для кэширования файлов. Он будет держать ваши недавно использованные файлы доступными как можно дольше, уравновешивая потребность в памяти и время доступа к файлам.
Когда вы используете RAM-диск, вы, по сути, говорите, что заранее знаете, какие файлы должны быть доступны очень быстро и что они не будут недавно использованными. Если это действительно недавно использованные файлы, то, используя RAM-диск, вы теряете возможность более гибко использовать память, возможно, улучшая производительность в других областях.
Время, необходимое для чтения файла из реального хранилища (не RAM-диска) на виртуальной машине, вероятно, несколько больше, чем на той же машине без виртуализации. Итак, вам нужно задать себе этот вопрос:
Использую ли я большую мощную виртуальную машину с действительно хорошей подсистемой хранения, или я использую ту же машину, которую использовал для IIS, но теперь я виртуализирую сервер IIS?
Если это первое, то задержка чтения файла может не иметь большого значения. Если это второй вариант, задержка чтения файла будет больше в виртуальной машине, и поэтому RAM-диск может иметь больше смысла.
Кроме того, вам нужно задать себе еще один вопрос:
Я размещаю только одну виртуальную машину на этом сервере или использую этот хост совместно с несколькими рабочими нагрузками?
Если вы используете общий хост, вам необходимо подумать, может ли ОЗУ, которое вы передаете виртуальной машине IIS для RAM-диска, лучше использовать какой-либо другой виртуальной машиной. Если у вас включена динамическая память на ваших виртуальных машинах, она будет перетасована в виртуальную машину, которая в настоящее время в ней нуждается. Вы можете выполнить гораздо больше работы в совокупности, если разрешите использовать эту оперативную память там, где она действительно необходима в данный момент, вместо того, чтобы заранее решить, что ее следует использовать для уменьшения задержки доступа к файлам для IIS.