Вопрос: Windows Server - «Недостаточно доступной памяти»


У нас есть два сервера IIS 7, которые работают в веб-саду. На каждом сервере есть копия каждого сайта. Файлы синхронизируются с использованием DFS (только исходных файлов). Изображения и большие файлы расположены на разных серверах, используя общий доступ.

По крайней мере, несколько раз в неделю, мы получаем ошибку "Not enough storage available" при чтении любого файла или обработке кода сервера. Сервер IIS не может сопоставить путь к локальному диску (а не только тот, который синхронизируется с DFS), также возникает проблема с загрузкой групповых политик (мы получаем различные ошибки), и мы не можем открыть какой-либо ресурс на любом сервере на lan. Существуют также ошибки ввода-вывода при чтении файлов из других пользовательских приложений. Скорость диска и латентность во время этого падения - все в порядке. Если мы попытаемся скопировать файл или протестировать скорость диска, как правило, работает. Иногда мы даже не можем запускать «мой компьютер» или любое другое программное обеспечение (например, монитор производительности). Он может запускаться только в том случае, если мы «запускаем как администратор». На каждом диске доступно больше, чем достаточно.

Большинство сайтов перестают работать (но не все). После перезапуска сервера все работает нормально в течение нескольких дней, а затем проблема повторяется.

Серверы виртуализируются с использованием VMWARE, 50 пулов IIS (некоторые ограничены памятью) и около 200 запущенных сайтов на каждом сервере. Оба сервера имеют 16 ГБ оперативной памяти (используется только около 80%). ЦП постоянно находится между 30-60%.

Мы попытались изменить свойство реестра IRPStackSize на большее число, но никаких изменений не было. Проблемы все еще существуют. Мы пытались отключить антивирус (NOD) - нет успеха.

Любой намек? Может быть, мы близки к ограничениям IIS (ко многим сайтам / пулам)? Может быть, 32-битная ОС и 16 ГБ оперативной памяти? Возможно, есть некоторые «секретные» настройки реестра ... Мы не думаем, что ежедневный перезапуск - это долгосрочное решение.


5
2018-03-06 09:15


Источник


Что-нибудь в зрителе событий? - ETL
Вы исследовали vcenter для ограничений памяти? Являются ли эти 2 IIS vm в пуле ресурсов? Любые признаки всплеска памяти или пейджинга на уровне виртуальной машины или пула ресурсов? У vm есть ли ограничения памяти по умолчанию Unlimited? Есть ли проблемы с самим хранилищем данных, где хранятся файлы памяти vm? - Homebrew Hops
@GregDrake Мы открыли билет в MS. Мы отправили журналы просмотра событий. Ответ был: ничего необычного - измените IRPStackSize. Да, мы используем PAE. Затем мы исследуем vcenter ... - easwee


Ответы:


Not enough storage available ошибка не имеет ничего общего с дисковым хранилищем. Речь идет о внутренней памяти.

Эта ошибка довольно легко воспроизвести. Просто выберите кучу больших файлов (изображений или DLL или что-то еще), щелкните правой кнопкой мыши и используйте опцию open-with, чтобы открыть их с помощью Notepad. Это должно съесть выделение внутренней памяти. Когда файл подкачки приближается к максимальной емкости, случайные службы начнут регистрировать Not enough storage available в журнале событий. Часто они остаются в неисправном состоянии, пока не будут перезапущены.

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

IIS обычно справляется с этой ситуацией довольно хорошо (по сравнению со средней службой Windows).

Чтобы найти процесс, который вызывает это (обычно утечку памяти), вы должны использовать Монитор производительности mmc и записывать использование памяти в выполняемых процессах (быть выборочным при принятии решения о записи, поскольку эти лог-файлы могут стать довольно большими). Другим вариантом было бы использовать Xperf, что на самом деле больше подходит для отладки низкоуровневых драйверов и поэтому, но может быть полезно и в этом сценарии.

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

IIS обычно может циклически запускать пул таким образом, чтобы никто не заметил (в зависимости от того, как приложение обрабатывает сеансы, если оно выполнено на заказ, вы можете потерять сеансы, когда все статические переменные будут очищены). Часто такое обходное решение достаточно хорошо, и можно избежать дорогостоящей фиксации ошибки (отказ от ответственности: это не «мой стиль» решения проблем, но большинство заинтересованных сторон так любят это).


3
2018-03-14 00:05



Точно, физические ресурсы все в порядке: cpu 30-60%, ram cca 80% все время, дисковое пространство в порядке ... Fyi, мы постоянно контролируем серверы. Кроме того, обновления и исправления были первыми, что мы сделали. Только вчера проблема снова повторилась. Мы попытались перезапустить «Службу поддержки хоста приложений», и IIS стал работать, и сайты начали работать. Теперь мы не знаем, вылечили ли мы причину или результат проблемы? Может, это новая подсказка? - easwee
Вы контролируете серверы, но контролируете ли вы службы и пулы приложений отдельно? 80% вы говорите, было то, что к тому времени, когда вам нужно посмотреть, что происходит, или была ли история мониторинга постоянно на 80% до того, как произошла ошибка? Если он постоянно составлял 80%, то это служба, которая регистрировала Not enough storage available ошибка, которая вызывает недоумение, пытаясь выделить чрезмерный объем памяти за короткое время. Вы должны иметь возможность найти исходный процесс, в котором возникла ошибка в журнале событий. Из вашего описания кажется, что это может быть explorer.exe? - Louis Somers
Хотя нам все еще не удалось решить проблему, мы считаем, что этот подход очень близок к тому, что нам действительно нужно сделать, чтобы решить эту проблему. - easwee


32-разрядная операционная система с 16 ГБ оперативной памяти эффективно отключит 12Gb. Обновление до 64-битной ОС должно быть должным образом рассмотрено.

Использование переключателя PAE (Physical Adress Extension) может предложить временное исправление.

Информацию о максимальной памяти, которую ОС может использовать вместе с информацией о переключателе PAE, можно найти на:

http://msdn.microsoft.com/en-us/library/windows/hardware/gg487503.aspx

С Уважением,


5
2018-03-11 15:05



Или просто уменьшить объем оперативной памяти. Возможно, закончились записи в таблице страниц. - mfinni
Не «считается», базовым. Всем, кто работает в 32-битной ОС в 2013 году, не имеет особого основания (специальное оборудование с драйверами), следует пересмотреть. Возможно, его карьера. - TomTom


Может быть утечка памяти? Возможно с этим количеством пулов IIS, в зависимости от того, что они делают.

Легко отслеживать с помощью POOLMON.EXE от Microsoft (воспользуйтесь его официальными инструментами поддержки 2003 года или копией только файла из моего собственного места здесь: www.dfdfdf.eu/poolmon.exe)

Скрипт Powershell Я работаю почасово в течение 'reboot -> crash'.

$date = get-date -Format ddMMyy-hhmm

.\poolmon.exe -b -n Output-$date.log

#send-mailmessage -smtpserver 10.1.1.11 -to patrick@mail.co.uk -from poolmon@mail.co.uk -subject "Poolmon output $date" -attachments "Output-$date.log"

#Extract top offender

$TAG = (Get-Content Output-$date.log)[3]

$Code = $((($TAG -replace '\s+', ' ').split(" "))[1]) 
$Byte = $((($TAG -replace '\s+', ' ').split(" "))[6])

ECHO "$Code,$Byte" >>chart.csv

Chart.CSV покажет вам верхнее значение TAG и его байтов.

Output-$date.log покажет вам все.

Если у вас есть один преступник наверху, он остается наверху и увеличивается до сбоя, у вас есть вероятный кандидат на эту причину.

Также смотрите в Eventvwr в системе для событий из SRV упоминание «недостаточных ресурсов»


1
2018-03-13 10:40



Мы постараемся установить это - плохая вещь - это только то, что требуется время для ошибки, но это начало. Спасибо. - easwee


Прежде всего, это много сайтов для работы с такими рабочими процессами IIS в 32-разрядной операционной системе. Как уже упоминалось другими пользователями, 64-разрядная операционная система определенно облегчит проблемы с производительностью.

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

В-третьих, нет информации о операционной системе, но при запуске IIS 7 я предполагаю Server 2008. Вы проверили, есть ли пакеты обновлений и исправления для серверов и читаете примечания к выпуску? В одном из них может быть исправлено.

Я также рекомендовал бы запустить PerfMon на всех серверах и искать длинные очереди физического диска, использование ЦП, использование файла подкачки% и ошибки страницы памяти / сек. Также посмотрите на мониторинг VMWare и посмотрите, есть ли проблемы с такими хранилищами данных, как высокая латентность.

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


0
2018-03-13 20:51