В последнее время наш сервер довольно часто зависает. Я подозреваю утечку памяти, но все еще не могу найти подозреваемого. В журнале событий записывается такая ситуация:
- <SystemInfo>
<SystemCommitLimit>49195651072</SystemCommitLimit>
<SystemCommitCharge>49195651072</SystemCommitCharge>
<ProcessCommitCharge>3172712448</ProcessCommitCharge>
<PagedPoolUsage>432541696</PagedPoolUsage>
<PhysicalMemorySize>16983396352</PhysicalMemorySize>
<PhysicalMemoryUsage>16197967872</PhysicalMemoryUsage>
<NonPagedPoolUsage>183476224</NonPagedPoolUsage>
<Processes>139</Processes>
</SystemInfo>
- <ProcessInfo>
Как вы видите, SystemCommitCharge достигает SystemCommitLimit (~ 45 ГБ), но ProcessCommitCharge составляет всего 3 ГБ.
Я даже проверяю 3 процесса, которые в то время используют больше всего памяти, но вместе они используют только около 1 ГБ. Есть еще около 100 процессов, но каждый из них использует максимум 50 МБ.
Windows успешно диагностировала нехватку виртуальной памяти. В но вместе они используют только около 1 ГБ. Есть еще около 100 процессов, но каждый из них использует максимум 50 МБ.
Windows успешно диагностировала нехватку виртуальной памяти. В но вместе они используют только около 1 ГБ. Есть еще около 100 процессов, но каждый из них использует максимум 50 МБ.
Windows успешно диагностировала нехватку виртуальной памяти. В следующие программы потребляли больше всего виртуальной памяти: sqlservr.exe (4480) израсходовано 565637120 байт, mysqld.exe (4500) израсходовано 362201088 байтов, а java.exe (1628) потреблял 314191872 байта.
Кажется, все указывает на то, что есть что-то, кроме моих процессов, которые потребляют ресурс.
Еще я заметил, что в настоящее время (после перезапуска системы) наши Выделенная память и кэш значительно увеличиваются по сравнению с обычным использованием памяти. Однако при повторной проверке с помощью Rammap я вижу, что большая часть памяти находится в режиме ожидания, что означает, что это не должно влиять на производительность системы. Кроме того, невыгружаемая память теперь составляет всего 133 МБ, так что проблема драйверов не должна быть проблемой. Я ничего не знаю.
Внимательно проверяя наш сервер в течение 3 дней, я вижу, что объем используемой памяти постепенно увеличивается, от:
(30/08)
Используется = 3,4 ГБ зафиксировано = 5,3 ГБ кэшировано = 2,2 ГБ выгружаемого пула = 225 Невыгружаемый пул МБ = 76,2 МБ по
(01/09)
Используется = 3,9 ГБ, выделено = 23,9 ГБ, кэшировано = 11,9 ГБ выгружаемый пул = 335 Невыгружаемый пул МБ = 133 МБ
Есть ли способ обнаружить этот «таинственный фактор» в действии?
Вы можете проверить утечку памяти с помощью Poolmon ...
Это часть Windows Driver Kit (WDK).
Некоторые полезные ссылки от Microsoft:
http://msdn.microsoft.com/en-us/library/ff545405 (v = VS.85) .aspx
http://msdn.microsoft.com /en-us/library/ff550458.aspx
http://msdn.microsoft.com/en-us/library/ff550442(VS.85).aspx