none
Утечка памяти. RRS feed

  • Общие обсуждения

  • Добрый день. Мы используем Windows Server 2008 r2 в редакции Standard, данная машина расположена на платформе виртуализации VMware ESXi 5.1, на машину выделены следующие ресурсы:

    Процессор: Intel(R) Xeon(R) CPU E7-4879 @ 2.40GHz 2.40 GHz (2 процессора)

    Установленная память(ОЗУ): 9,00 Гб

    На данном сервере установлены следующие роли:

    • Веб-сервер IIS, используется только FTP-server;
    • Службы печати и документов, используется для печати через принтеры которые «мапятся» RDP пользователями;
    • Службы удаленных рабочих столов, используется классический вариант Terminal Server;
    • Файловые службы, для управления файловыми шарами;

    Список используемого программного обеспечения:

    • 1С Предприятие 8.2, работает в клиент-серверном варианте, SQL и сервер 1с расположен на отдельном сервере;
    • 7-zip;
    • Microsoft Silverlight, совсем не используется, появился после обновления;
    • Notepad ++;
    • VMware Tools;

    Файл подкачки установлен по выбору системы и занимает 9215 Мб.

    В виртуальной машине установлены два сетевых адаптера, один смотрит во «внешний мир», другой созерцает «внутренний мир».

    На машине установлены последние критические обновления на 15,02,2013. Данная машина находится в домене и используется для доступа в 1С. Максимальное количество пользователей за последние 30 дней не превышало 11.

    Суть проблемы: работе 2-ух пользователей оперативная память используется на 65%, при том что суммарная используемая память пользователями не равна этому значению. Ниже приведены , кол-во пользователей, , использование памяти по мнению «RamMap».


    Данная проблема возникает не только на одном сервере, но и как минимум на 10. Перезагрузка помогает, но не на долго, приблизительно на 1 неделю, после этого ситуация возвращается на круги своя. На сервере установлено много драйверов принтеров для проброса их в терминальные сессии.  Собственно как определить чем занимается «Page Table»? 

    15 февраля 2013 г. 13:02

Все ответы

  • Собственно как определить чем занимается Page Table
    Сам по себе - ничем, это не драйвер. Это область памяти, используемая для маппинга адресов виртуальной памяти в адреса физической. Т.е. некая большая табличка с указателями. Первое что приходит в голову - на серверах у вас работает нечто, что постоянно запрашивает выделение памяти, причём очень маленькими порциями. В результате чего растёт фрагментация виртуальной памяти (на это вы повлиять не можете никак - только найдя причину) и следовательно пухнет Page Table... с учётом количества серверов - это может быть как 1совская защита, драйвера принтеров или антивирусное ПО


    15 февраля 2013 г. 14:24
    Отвечающий
  • В rammap справа от отображаемой вкладки Use Counts есть вкладка Processes, в ней колонка Page Table, сортируй по ней, и смотри какие процессы используют этот ресурс.


    I'm preparing for the exam 70-660 TS: Windows Internals

    profile for sergmat at Stack Overflow, Q&A for professional and enthusiast programmers

    15 февраля 2013 г. 15:46
  • Попробовал, но ясности не добавило.((( Есть какие-либо еще предположения? Возможно, что это связанно с использованием файлового варианта 1с-ки? Хотя на серверах с sql версией ситуация похожая. 

    18 февраля 2013 г. 9:29
  • У вас на скриншоте 53 процесса, а судя по размеру полосы прокрутки их там ну очень много. Вот почему и счетчик зашкаливает, память съедается на описание таблиц страниц всех запущенных процессов. Сколько процессов было запущено, когда скриншот делали?


    I'm preparing for the exam 70-660 TS: Windows Internals

    profile for sergmat at Stack Overflow, Q&A for professional and enthusiast programmers

    18 февраля 2013 г. 11:23
  • На момент скриншота около 200-250, не больше. Сейчас сделал повторно замер и из него получается что процессов 195, 13 пользователей, Page Table - 3,5 Гб.
    18 февраля 2013 г. 12:28
  • Почему-то в этой прекрасной области памяти сейчас хранится информация о всех процессах когда-либо запущенных со времени последней перезагрузки. Я попробовал сделать выгрузку rammap - ом в txt файл, он у меня получился размером 230 мб.

    Весь этот длинный список процессов, на который я раньше не обращал внимания, состоит исключительно  из процессов запущенных пользователями, у них разный pid, session, но одинаковый размер занимаемой памяти, и состоит он из двух частей:

    1. Privet - 4K;

    2. Page Table - 16K.

    Нормально ли такое поведение сервера? У нас множество серверов развернутых с одного шаблона, и все они имеют схожие проблемы. Надо срочно лечить...)

    18 февраля 2013 г. 13:13
  • Нормально ли такое поведение сервера? У нас множество серверов развернутых с одного шаблона, и все они имеют схожие проблемы. Надо срочно лечить...)
    Вы так и не уточнили насчёт антивируса и драйверов защиты 1С. Что-то не отпускает ваши процессы в мир иной... :) ощущение, что кто-то повесил свой обработчик на выход - в итоге пустые процессы висят...

    А запустите-ка после перезагрузки на одном из серверов сбор счётчиков в Perfmon: System\Processes и System\Threads - посмотреть на динамику с течением времени.

    18 февраля 2013 г. 13:26
    Отвечающий
  • Сколько процессов было запущено, когда скриншот делали?
    Только сейчас заметил - какие PID у процессов на скриншоте...
    18 февраля 2013 г. 13:27
    Отвечающий
  • http://serverfault.com/questions/254908/process-managment-memory-leak-in-windows-server-x64 - вот случай с такими же симптомами, без ответа к сожалению.

    Я правильно понимаю, что если вы запустите, например, cmd.exe несколько раз и закроете его, то получите такой же скриншот.

    Процессы убиты, а память о них живёт.

    http://social.technet.microsoft.com/Forums/en/winserversecurity/thread/54c579c7-58e4-410f-b56c-35ec4b6e6122 а это тот же вопрос , заданный на мс, с ответом! Примерьте себе.


    I'm preparing for the exam 70-660 TS: Windows Internals

    profile for sergmat at Stack Overflow, Q&A for professional and enthusiast programmers

    18 февраля 2013 г. 14:08
  • Заметил классную особенность: перезагружаю сервер, запускаю cmd.exe 20 раз, закрываю их все, смотрю в rammap и вижу что они висят как и все остальные. Проверил на визуализации KVM - нет такого, проверил на Hyper-V (какой-то версии) - нет такого, проверил VMware Esxi 5.0 - есть, проверил VMware Esxi 5.1 - есть. Сейчас попробую скачать чистые образы Server 2008 R2 и разверну на этих же платформах, без установки обновлений проверю теми же действиями.
    18 февраля 2013 г. 14:10
  • Сейчас попробую скачать чистые образы Server 2008 R2 и разверну на этих же платформах, без установки обновлений проверю теми же действиями.
    Думаю, что можно проще - VMWare Tools. И... только что пришло в голову... Dynamic Memory и балунинг...
    18 февраля 2013 г. 14:12
    Отвечающий
  • Вы так и не уточнили насчёт антивируса и драйверов защиты 1С. Что-то не отпускает ваши процессы в мир иной... :) ощущение, что кто-то повесил свой обработчик на выход - в итоге пустые процессы висят...

    Скорее, кто-то держит ссылки на эти процессы. Если это делает процесс пользовательского режима, то эти ссылки не так сложно найти: для пользовательского режима ссылки - это описатели процесса (process handle), и можно поискать в Process Explorer тот процесс, который их держит открытыми.

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


    Слава России!


    • Изменено M.V.V. _ 18 февраля 2013 г. 14:15
    18 февраля 2013 г. 14:13
  • Антивирус тут не причем, а вот драйвер HASP, который идет в комплекте с установщиком 1с, имеет самое непосредственное отношение в сему безобразию. Поставил новую версию, протестировал, и увидел, что процессы умирают как полагается - без всяких останков. Сейчас протестирую на боевом сервере, вечером более подробно отпишу по версиям драйверов, которые использовал. Умиляет, что 1с продолжает толкать эти драйвера в комплекте со своим дистрибутивом... 
    19 февраля 2013 г. 6:09
  • драйвер HASP, который идет в комплекте с установщиком 1с, имеет самое непосредственное отношение в сему безобразию
    Как диагностировали?

    I'm preparing for the exam 70-660 TS: Windows Internals

    profile for sergmat at Stack Overflow, Q&A for professional and enthusiast programmers

    19 февраля 2013 г. 7:13