Вопрос или проблема
На прошлой неделе моя команда заметила, что некоторые наши скрипты управления группами AD в PowerShell выдают ошибки. После небольшого расследования мы обнаружили, что команда ‘Get-ADGroupMember’ зависает при обращении к некоторым контроллерам домена. У нас всего девять DC: пять виртуальных машин и четыре физических. Проблема воспроизводится только на четырех физических серверах. Эти четыре работают на Server 2016; виртуальные машины на Server 2022.
При обращении к не затронутым DC команда возвращается за миллисекунды. На затронутых DC время ожидания превышает пятиминутный лимит. Тестовая группа не велика. В ней менее 300 участников.
Я включил режим отладки для ADWS (как описано здесь) и зафиксировал процесс на одном из медленных DC и на одном из «нормальных» DC. Мне ничего не бросилось в глаза, кроме того, что как только процесс начинает получать каждый объект участника, время извлечения каждого объекта замедляется. Время выполнения других команд, таких как Get-ADUser, не показывает значительных различий.
Мы, кажется, не ограничены ресурсами, но, я заметил, что, когда команда работает на медленных DC, вся активность происходит на одном ядре.
Мы только что вернулись после праздничного перерыва, поэтому использование было минимальным, и трудно точно определить, когда началась проблема. Мы также внесли значительное изменение в наши процессы управления идентификацией несколько недель назад, что примерно удвоило количество наших пользовательских объектов с около 30 тыс. до 70 тыс. Наши проверки состояния DC и репликации показывают зеленый свет после этого изменения.
За исключением того, что это может быть специфической проблемой с обновлениями за декабрь 2016 года, я не знаю, куда двигаться дальше. Физическим серверам 8 лет, но они были с существенным запасом по спецификациям. Хотя одно ядро используется во время вызова, общее использование системы низкое.
Ответ или решение
Проблемы с производительностью PowerShell/Active Directory Web Services (ADWS), возникающие только на определённых контроллерах домена, являются сложной задаче, требующей всестороннего анализа. Рассмотрим возможные причины и последовательность действий для их устранения, основываясь на предоставленной информации.
Теория (Theory)
Проблема может быть связана с несколькими факторами, такими как версия операционной системы, особенности аппаратной платформы или изменения в инфраструктуре и конфигурации служб. В вашем случае, проблема наблюдается на контроллерах домена (DC), работающих на Windows Server 2016 и имеющих физическую аппаратную основу. Поскольку виртуальные машины (ВМ) на Windows Server 2022 справляются с командой Get-ADGroupMember без задержек, под подозрение попадают особенности и ресурсные ограничения физической инфраструктуры, а также возможные баги в программном обеспечении Server 2016.
Пример (Example)
Общие источники подобных проблем обычно включают ресурсоёмкость операций, влияние обновлений системы, режим использования (например, однопоточность), изменения в конфигурации AD и сетевые задержки. В приведённом вами случае наблюдается значительное увеличение количества пользователей (с 30k до 70k), что может повлиять на производительность ADWS, особенно на менее производительной системе или при наличии ограничений в управлении кэшированием и параллельной обработкой запросов.
Применение (Application)
-
Внимательное изучение журналов и событий ADWS. Несмотря на то что вы не заметили ничего необычного при сравнении логов, возможно, поможет дополнительный анализ, особенно в части, касающейся специфики обработки объектов на конкретной версии ОС и физическом оборудовании.
-
Тестирование влияния конкретных обновлений и патчей. Проверьте, нет ли известных проблем с последними обновлениями для Windows Server 2016, которые могли бы повлиять на производительность ADWS. Это можно сделать с помощью официальных вендорных ресурсов и форумов на базе опыта сообщества.
-
Анализ использования процессорных ресурсов. Вы отметили, что при выполнении команды наблюдается использование одного ядра. Это может указывать на проблему с многопоточностью или ограничением в конфигурации ADWS сервиса. Проверьте возможность изменения настроек, связанных с многопоточностью, или настройте распределение нагрузки по ядрам.
-
Оптимизация конфигурации и структуры домена. Поскольку вы увеличили количество пользователей, обратите внимание на способы оптимизации обработки запросов, такие как настройка индексов и оптимизация кэширования в AD.
-
Проведение сравнения конфигураций. Сравните конфигурацию успешных ВМ и проблемных физических серверов, вплоть до мелочей, таких как сетевые параметры, настройки безопасности и обработки данных.
-
Расширенное тестирование и мониторинг. Внедрите более детальную систему мониторинга производительности с целью отследить происходящее в реальном времени и создать базу данных для дальнейшего анализа.
Проведение комплексного и системного анализа, а также тесное взаимодействие с экспертами вашего поставщика решений могут помочь в дальнейшем решении выявленных проблем.