Недавно я установил ядро сервера 2012 года с Hyper-v. Затем я установил серверное ядро 2008 R2 в качестве клиента. Установил IIS и начал размещать внутренний сайт. Я начал проводить тесты пропускной способности и обнаружил, что веб-сервер не может обрабатывать столько трафика, сколько ожидалось. Виртуальная машина была настроена с динамической памятью с максимальным объемом 6 ГБ (намного больше, чем может потребоваться этой простой странице).
После длительного чтения выясняется, что IIS вычисляет максимальное количество подключений на основе количества доступной оперативной памяти при запуске. Поэтому я изменил стартовую память в Hyper-v на 6 ГБ (максимум), и теперь тесты пропускной способности - это то, что я ожидал. Хотя назначенная память составляет всего 668 МБ.
Мой вопрос: нужен ли IIS максимальный объем оперативной памяти при запуске для выполнения этого расчета? если бы я установил начальную память размером 1 ГБ, попытался бы IIS когда-нибудь использовать что-нибудь сверх этого? Если бы у меня было пять или шесть веб-серверов, и мне пришлось бы назначить максимальный объем памяти (который может превышать общий объем доступной памяти) для каждого, возникли бы проблемы при перезапуске (запуск всех машин одновременно)? В принципе, нужно ли мне устанавливать максимальный объем памяти в качестве начальной?
Сервер 2012R2 в качестве хоста фактически позволит вам запускать все ваши виртуальные машины одновременно, даже если их общий объем ОЗУ превышает общий объем оперативной памяти хоста. Часть их состояния будет выгружена на диск до тех пор, пока агент динамической памяти не сработает и не вытеснит ненужную память.
Что касается вашего вопроса о IIS, я не знаю, как он закодирован. Очевидно, что его можно закодировать так, чтобы ему не требовалась вся доступная оперативная память во время запуска. Однако это было бы сложнее, чем кодировать его, чтобы просто посмотреть на сообщаемый размер ОЗУ.