Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2008/2008 R2 » 2008 R2 - spoolsv.exe, утечка в каком-то драйвере...?

Ответить
Настройки темы
2008 R2 - spoolsv.exe, утечка в каком-то драйвере...?

Аватара для Котяр

Пользователь


Сообщения: 100
Благодарности: 4

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png Printer Drvs.PNG
(24.8 Kb, 18 просмотров)
Принтеров не много, как юзеров по RDP.
Сервер выполняет не сложные функции терминального доступа (1С) и файлохранилища. Юзеров не более 12 одновременно, в среднем 6-8 юзеров.
Принтеров всего 4 шт., их видно на скриншоте, 4018-ых - 2 шт.
spoolsv начинает наполняться сразу же, от 11-16 Мб до тех пор, пока не кончится физическая память/или просто перестанет идти печать/зависнет все к черту. Но последнее редко случается, за сутки набегает примерно 350 и более Мб.
К сожалению не знаю как диагностировать данное явление, в логах ошибок никаких нет. Я не шибко администратор, но немного в этом понимаю. Приходится держать.
Пока решаю проблему перезапуском службы печати пару раз в сутки. Благо действо занимает от 1, до 5 секунд.
Соответственно при наполнении spoolsv более 500 Мб, печать идет с задержкой до 10 секунд. Ну и тормозит все начинает потихоньку.
Драйвера все последние стоят.
Принтеры сетевые (к серверу не подключен ни один), но установлены как локальные.
Ну и вопросы такие конкретно:
-как узнать что именно заставляет раздуваться spoolsv,
-и если узнаем, что делать? Выкидывать принтер?
Спасибо за помощь.

Отправлено: 12:11, 25-10-2013

 

Аватара для Котяр

Пользователь


Сообщения: 100
Благодарности: 4

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png VMMAP-2.PNG
(79.4 Kb, 16 просмотров)

Petya V4sechkin, В большей части heap'ов фигурирует один из хостов, на котором раньше был один из mf4018, но в связи с перестановкой переткнул принтер на другой хост...хм...в Heap'ах много всего, но больше всего то, что прикрепил. За менее чем 12 часов spoolsv сожрал уже 250 Мб.
Вот что большей частью идет. Либо этот хост в одиночку, либо попеременно с \\Server (это имя сервера).
Либо этот же хост с какими нибудь принтерами...
Да много чего, в общем, в heap'ах упоминаются все принтеры/драйверы...что я думаю норма...
Сейчас посмотрю что там с тем самым хостом kos-nb-1.
---
Посмотрел, ничего подозрительного не обнаружил...Все в порядке.
Странные дела, да и не должны хосты как-то воздействовать на spoolsv который находится на сервере....

Последний раз редактировалось Котяр, 28-10-2013 в 11:09.


Отправлено: 10:42, 28-10-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


воспользуйтесь LeakDiag. Она умеет мониторить вызовы диспетчера кучи(Heap Manager) и пишет в лог стек трейс.

Отправлено: 18:16, 28-10-2013 | #12


Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


Цитата Efir:
воспользуйтесь LeakDiag »
хотя не, утилита устаревшая. Лучше заюзать appverifier, он вместе с ОС поставляется, лежит в system32. Правда использовать нужно в совокупности с Debugging Tools for Windows . Алгоритм поиска утечки заключается в отслеживании открытых и закрытых дескрипторов. Если интересно, можно попробовать.

Отправлено: 22:05, 28-10-2013 | #13


Аватара для Котяр

Пользователь


Сообщения: 100
Благодарности: 4

Профиль | Отправить PM | Цитировать


Efir, конечно интересно, только я в этом видимо совсем буду тупить, но, час мануалы посмотрю.
Debugging Tools for Windows мне видимо x64 надо найти? Вы дали ссылку на х32. Хотя я не давно скачивал пакет sdk, час оттуда поставлю, там должен быть Deb.Tools. А вот шо делать дальше...

Отправлено: 10:33, 29-10-2013 | #14


Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


Цитата Котяр:
Debugging Tools for Windows мне видимо x64 надо найти? Вы дали ссылку на х32 »
разрядность не имеет значения, отладочные примитивы осуществляет ос.
Цитата Котяр:
А вот шо делать дальше... »
я к сожалению сегодня не дома, возможно вечером напишу, т.к. мне самому нужно руководствоваться литературой. Да, Debugging Tools for Windows входит в SDK, можете брать оттуда. Для начала установите Debugging Tools и настройте отладочные символы. В диалоге "Свойства системы" на вкладке "Дополнительно" есть кнопка для открытия диалога "Переменные окружения". Создайте там переменную с именем _NT_SYMBOL_PATH и значением srv*d:\symbols*хттп://msdl.microsoft.com/download/symbols;cache*d:\symbols, где d:\symbols, - это путь, по которому отладчик будет кешировать отладочную инфу, можете указать свой. хттп замените на http, а то двиг форума ссылку делает.

Отправлено: 12:32, 29-10-2013 | #15


Аватара для Котяр

Пользователь


Сообщения: 100
Благодарности: 4

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png NT_Symbol_Path.PNG
(69.2 Kb, 12 просмотров)

Efir, это в системные переменные среды вбить верно?
Вроде сделал, мануалов не много гугл выдает. Особо толкового не смог ничего найти.
А вот ****msdl.micro******nload/symbols** это что-то вроде словаря видимо, если я правильно понимаю, для удобного вывода информации?
Я тут пока методом научного тыка windbg x64...запустил...тыкаю

Отправлено: 14:11, 29-10-2013 | #16


Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


Цитата Котяр:
это в системные переменные среды вбить верно? »
да, все верно проделано.

Цитата Котяр:
А вот ****msdl.micro******nload/symbols** это что-то вроде словаря видимо, если я правильно понимаю, для удобного вывода информации? »
ну что-то типа. Когда пишется программа, переменные и функции именуются. После компиляции, тобишь преобразовании исходного кода в машинный, эти имена превращаются в цифры(адреса). Так как исходный код майкрософт не предоставляет, то во время отладки видно лишь мало о чем говорящие цифры. Поэтому они предоставляют файлы, в которых и хранится информация о том, как называется та или иная функция или переменная и таким образом видно в какой функции мы находимся во время отладки, как выглядит последовательность вызовов функций и т.д. Вот эти файлы скачиваются отладчиком по указанному выше урл.

Отправлено: 15:09, 29-10-2013 | #17



Moderator


Сообщения: 53589
Благодарности: 15546

Профиль | Отправить PM | Цитировать


Котяр, в предыдущем сообщении я рекомендовал вам поисковый запрос Windbg process memory leak.
Ссылок столько, что аж глаза разбегаются.

Пример
Memory Leak Analysis using Windbg

Отправлено: 17:17, 29-10-2013 | #18


Аватара для Котяр

Пользователь


Сообщения: 100
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата Petya V4sechkin:
Ссылок столько, что аж глаза разбегаются. »
Да понятно что разбегаются, они по большей части копи пасты одного и того же. Я все эти шаги делал, но ничего из всего этого понять не удалось, мало того, при аттаче к процессу, он перестает работать. То есть печать останавливается, что не допустимо в рабочее время.
Я конечно попробую после работы...но, сами понимаете, после работы - это после работы. Но раз уж взялся...попробую сегодня вечером.

Отправлено: 11:18, 30-10-2013 | #19


Старожил


Сообщения: 283
Благодарности: 53

Профиль | Отправить PM | Цитировать


Чуть подробней изучил вопрос, пару советов спросил у братухи и стало ясно, что способов локализовать утечку в куче вагон и маленькая телега. Используя WP Toolkit, Application Verifier, WinDbg из Debugging Tools for Windows или User-Mode Dump Heap из того же пакета.

Вкратце как работает спулер печати. Если знаете, можете пропустить абзац. Драйверы принтеров, физических или виртуальных, не важно, представляют собой динамические библиотеки, которые загружаются в контекст процесса spoolsv. Автоматически загружаемые модули можно увидеть, используя утилиту Autoruns. На скриншоте ниже видно список автоматически запускаемых подсистемой печати библиотек.



На скриншоте ниже, с помощью Process Explorer , можно видеть загруженные на данный момент в адресное пространство spoolsv драйвера принтеров.



Драйвера коммутируются с подсистемой печати посредством импорта из библиотеки spoolss.dll. На скриншоте ниже показан импорт драйвера виртуального принтера. Из названий функций видно как драйверы добавляют принтеры, открывают, перечисляют, закрывают и т.д.



В прошлом посте я хотел использовать AppVerifier, но в msdn пишут
Цитата:
Leak Stop Details - Detects leaks by tracking the resources made by a dll that are not freed by the time the dll was unloaded
то есть утечки детектируются только в библиотеках, которые не освобождают ресурсы во время выгрузки, тобишь кто хендл не закрыл, тот и "дал течь". Хоть и на 99% можно быть уверенным что утекает память из-за указанных выше сторонних библиотек, выгружатся они будут лишь при остановке принтспулера. Выгрузка диспетчера печати в общем-то тоже не является проблемой, ибо, как писал ТС, перезапускает его пару раз на день, когда раздувается его рабочий набор. Котяр На скриншоте Process Explorer, справа, видно версию установленных драйверов. Исправить проблему не разбираясь, можно сменив версию на более новую, либо старую, но раз уж писал столько букв, давайте добьем.

Выше Petya V4sechkin дал ссылку, в которой алгоритм поиска утечки основан на снятии дампа с кучи с помощью Windbg руками. Котяр Т.к. вам прийдется дольше разбиратся, что нужно делать и что написано в логах, предлагаю воспользоваться UMDH, которая входит в Debugging Tools for Windows, который вы уже установили. Действия ваши таковы. Снимаете с помощью утилиты 2 дампа, первый сделанный во время старта спулера, второй на ваше усмотрение, когда используемая им память подростет. Дальше с помощью этой утилиты делается сравнение дампов и анализ пишется в лог. Вот этот лог и прикрипите в тему. Как сделать дампы и лог напишу чуть позже либо можете почитать справку, там всего 3 команды.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:25, 30-10-2013 | #20



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Windows Server 2008/2008 R2 » 2008 R2 - spoolsv.exe, утечка в каком-то драйвере...?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] spoolsv.exe Greenfield Поиск драйверов, прошивок и руководств 1 28-02-2012 10:41
spoolsv.exe steepy Лечение систем от вредоносных программ 8 18-10-2010 14:19
Spoolsv.exe даёт ошибку Tolian Microsoft Windows NT/2000/2003 1 21-02-2006 15:43
spoolsv.exe Alien2 Microsoft Windows NT/2000/2003 6 02-11-2005 09:45
Ошибка spoolsv.exe в Вин2000 Undel Microsoft Windows NT/2000/2003 8 22-09-2004 11:14




 
Переход