Я работаю над тем, чтобы отладить проблему с помощью одного нашего серверного процесса, который потребляет большое количество ручек в течение 60-90 дней. Родительский процесс сервера порождает и циклирует число детей, причем каждый ребенок перерабатывается примерно один раз в час. Количество обработчиков обработчика родителя вырастет до 40k плюс в течение двух месяцев, но я не уверен, что именно обрабатывают ручки.Как определить, что обрабатывает этот процесс?
Используя ProcessExplorer, я могу увидеть количество элементов управления и количество ручек (см. Ниже пример). Однако количество перечисленных ручек не приближается к числу 40k, указанному в верхней панели. У меня около ~ 100 записей в окне дескрипторов, и, просматривая их свойства, я могу рассчитать около 3 тыс. Суммарных ручек с этим окном, вдалеке от всего 40 тыс.
Я установил родительский цикл для его детей каждые несколько минут, чтобы попытаться выяснить, имеет ли он что-то общее с детьми-велосипедистами, но мониторинг в течение часа, похоже, не привел к увеличению количества обработчиков исходного процесса Любые. В течение этого периода он увеличивался и уменьшался, но не вверх по течению. По общему признанию, час - это далеко от двух месяцев, но это начало.
Я бы очень признателен за то, как я могу устранить эту проблему дальше. К сожалению, это не соответствует моим общим знаниям, поэтому я немного потерян. Любая помощь будет с благодарностью оценена при определении того, что может включать этот счетчик.
Обновление: На основе рекомендации по josh poley
ниже, я использовал handle.exe
от Sysinternals для изучения процесса. Используя флаг -a
, я получил только 5 результатов. Итак, я попробовал флаг -s
, в котором перечислены кол-во обработок по всем процессам. Я запустил его один раз, а затем перезапустил свои зараженные серверы и снова запустил его. Категория ручек Mutant резко упала, что заставляет меня думать, что мне нужно сосредоточиться там. Будет ли исследование
Случайный снимок в темноте: когда речь идет о нерестах детей и обтекающих ручках, типичная проблема заключается не в закрытии двух обработанных, предоставляемых CreateProcess в lpProcessInformation, может быть, взгляните на нее. –