MaxConcurrentApi 설정을 사용하여 NTLM 인증에 대한 성능 조정을 수행하는 방법

이 문서에서는 MaxConcurrentApi 설정을 사용하여 NTLM 인증에 대한 성능 조정을 수행하는 방법을 설명합니다.

적용 대상: Windows Server 2012 R2
원래 KB 번호: 2688798

소개

기업 정보 기술의 소비화 증가(기업에서 사용되는 스마트폰 및 태블릿과 같은 소비자 지향 디바이스의 증가)는 기업이 엔터프라이즈 환경에서 레거시 인증이 크게 증가할 수 있는 시나리오의 수를 증가시켰습니다. 레거시 인증이 증가하면 클라이언트의 지연 또는 시간 제한과 같은 성능 문제가 발생할 수 있습니다.

환경에서 인증 시간 제한 또는 지연(MaxConcurrentApi 병목 현상이라고도 함)을 검색하는 경우 문제를 resolve 일반적인 방법은 해당 인증을 서비스하는 허용되는 최대 작업자 스레드를 발생시키는 것입니다. MaxConcurrentApi 레지스트리 값을 변경한 다음 서버에서 Net Logon 서비스를 다시 시작하여 이 작업을 수행합니다.

병목 현상의 피해자인 서버와 실제로 병목 현상 지연의 원인을 파악하는 것은 어려울 수 있습니다. 이 문서에서는 MaxConcurrentApi 설정을 사용하여 NTLM(NT LAN Manager) 인증에 대한 성능 조정을 수행하는 방법을 설명합니다. 이 문서에는 MaxConcurrentApi 값을 올릴 서버와 해당 값을 설정해야 하는 양을 식별하는 관리자에 대한 지침이 포함되어 있습니다.

해결 방법

중요

이 절, 방법 또는 작업에는 레지스트리를 수정하는 방법에 대한 단계가 포함되어 있습니다. 그러나 레지스트리를 잘못 수정하면 심각한 문제가 발생할 수 있습니다. 따라서 다음 단계를 주의하여 수행해야 합니다. 추가된 보호를 위해 레지스트리를 수정하기 전에 백업하세요. 그런 다음 문제가 발생할 경우 레지스트리를 복원할 수 있습니다. Windows XP 및 Windows Server 2003에서 레지스트리를 백업, 편집 및 복원하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료를 참조하세요.
322756 Windows에서 레지스트리를 백업 및 복원하는 방법

이 문제를 resolve 시나리오에 관련된 모든 서버에서 가져온 성능 데이터를 검토해야 합니다. 그런 다음 성능 손실을 표시하는 서버에서 MaxConcurrentApi 설정을 늘릴 수 있습니다.

Netlogon NTLM 인증 문제를 보고하는 사용 가능한 이벤트가 있습니다. 다음을 참조하세요.
2654097 Windows Server 2008 R2에서 NTLM 인증 지연 및 실패를 추적하는 새 이벤트 로그 항목을 사용할 수 있습니다.

이벤트는 다음 두 카운터에 대한 활동을 나타냅니다.

  • 이벤트 5818/5819: 이벤트가 사용하도록 설정된 경우 "세마포 웨이터"가 있습니다.
  • 이벤트 5816/5817: "세마포 시간 제한"이 있습니다.

서버에 가장 적합한 MaxConcurrentApi 값을 결정하려면 수식을 사용하여 여러 데이터 요소를 함께 가져와 계산해야 합니다. MaxConcurrentApi를 추정하는 데 사용되는 데이터는 다음과 같습니다.

  • Net Logon 세마포 획득
  • Net Logon 세마포 시간 제한
  • Net Logon 평균 세마포 보류 시간
  • 완료된 성능 로깅 기간(초 단위)입니다.

데이터를 가져온 후 다음 수식을 사용하여 올바른 MaxConcurrentApi 값:(semaphore_acquiressemaphore_time-outs + ) * average_semaphore_hold_time time_collection_length / =<New_MaxConcurrentApi_setting
서버가 인증 부하를 받고 있을 때부터 Net Logon 성능 데이터를 수집한 후에는 선 보기 시작 및 종료 시간을 확인하여 데이터 수집 프로세스의 기간을 결정해야 합니다.

참고

자리 표시자 semaphore_acquiressemaphore_time 아웃은 보안 채널의 수명 동안 발생한 시간 제한 수를 나타내는 누적 숫자를 나타냅니다. 따라서 수집된 데이터에서 숫자가 0부터 시작되지 않을 가능성이 큽니다. 성능 모니터(Perfmon.msc)에서 선 보기를 사용하는 경우 시작 번호를 끝 번호에서 빼야 합니다. 그런 다음 새 MaxConcurrentApi 설정에 대한 수식에서 이 계산된 숫자를 사용합니다. 데이터 수집 중에 발생한 제한 시간을 확인하려면 Perfmon.msc의 줄 보기를 사용하고 끝과 시작 부분에 있는 해당 카운터의 줄 위에 마우스 포인터를 놓고 끝 번호에서 시작 번호를 빼야 합니다. 그 결과는 수식에 넣을 수입니다.

Perfmon.msc에서 기본 보기를 선 보기에서 보고서 보기로 변경하여 평균 세마포 보존 시간을 결정할 수 있습니다. 예를 들어 다음과 같은 경우를 생각해볼 수 있습니다.

  • 세마포 획득 값은 8,286입니다.
  • 세마포 제한 시간 값은 883입니다.
  • 평균 세마포 보존 시간은 (즉, 반초)입니다 .5 .
  • 보고 기간은 90초입니다.

이 시나리오에서 수식은 다음과 같습니다.
(8,286 + 883) *.5 / 90 =< 51

수식에서 파생된 값이 150 이상인 경우 레거시 인증 로드를 서비스하기 위해 서버를 더 추가해야 합니다.

값이 150보다 작은 경우 해당 서버의 MaxConcurrentApi 레지스트리 값을 수식에서 제안하는 값 또는 더 큰 값으로 변경해야 합니다.

참고

MaxConcurrentApi 값을 10보다 크게 늘리기로 결정한 경우 프로덕션 환경에서 변경 사항을 구현하기 전에 비프로덕션 환경에서 원하는 설정의 부하 및 성능을 테스트해야 합니다. 이 값을 늘리면 다른 리소스 병목 현상이 발생하지 않도록 하는 것이 좋습니다. 또한 부하 조건은 각 시나리오 및 비즈니스 환경에 따라 변경될 수 있습니다. 따라서 서비스 로드가 변경될 경우 MaxConcurrentApi 값은 나중에 다른 설정을 가져야 할 수 있습니다.

MaxConcurrentApi 설정을 변경하려면 다음 단계를 수행합니다.

  1. 시작, 실행을 차례로 클릭하고 regedit를 입력한 다음 확인을 클릭합니다.

  2. 다음 레지스트리 하위 키를 찾아서 클릭합니다. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

  3. 편집 메뉴에서 새로 만들기를 가리킨 다음 DWORD 값을 클릭합니다.

  4. MaxConcurrentApi를 입력한 다음 Enter 키를 누릅니다.

  5. 편집 메뉴에서 수정을 클릭합니다.

  6. 새 MaxConcurrentApi 설정을 10진수로 입력한 다음 확인을 클릭합니다.

  7. 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
    net stop netlogon

  8. 다음 명령을 입력한 다음 Enter 키를 누릅니다.
    net start netlogon

추가 정보

다음 기술 자료 문서를 사용하여 레거시 인증 병목 상태의 클라이언트 쪽 증상을 더 자세히 식별할 수 있습니다.
975363 인증된 서비스에 연결할 때 자격 증명을 묻는 메시지가 간헐적으로 표시되거나 시간 초과가 발생할 수 있습니다. 시나리오에서 인증 병목 현상이 여러 서버에 있을 수 있습니다. 따라서 지정된 시나리오의 모든 서버가 많은 부하를 서비스하는 동안 성능 데이터를 검토해야 합니다.

세마포 획득, 세마포 시간 제한 및 평균 세마포 보존 시간에 대한 카운터는 클라이언트 요청 서비스에 관련된 모든 애플리케이션 서버, 도메인 컨트롤러 및 신뢰할 수 있는 도메인 컨트롤러에서 검토해야 합니다.

서버 부하가 많은 동안 성능 데이터를 추적해야 합니다. 서버에서 클라이언트 요청이 가장 많이 표시되면 부하가 많이 발생합니다. 예를 들어 전자 메일 서버 시나리오에서 성능 데이터를 수집하는 가장 좋은 시기는 사용자가 직장에 도착하여 전자 메일 메시지를 검사 때입니다.

고려할 추가 항목은 다음과 같습니다.

  • 값이 없으면 아무 작업도 필요하지 않습니다. 서버에 지속적인 부하가 없는 한 세마포 홀더세마포 보류 시간 카운터에는 값이 표시되지 않습니다. 값이 없으면 MaxConcurrentApi 값을 변경할 필요가 없습니다.

  • 한 가지 크기가 모두 적합하지는 않습니다. MaxConcurrentApi 값은 각 서버에 대해 다른 값이어야 할 수 있습니다. 이 상황은 여러 애플리케이션 서버가 단일 도메인 컨트롤러에서 인증을 받거나 여러 서버가 도메인 컨트롤러가 처리해야 하는 더 큰 부하를 제공하는 유사한 시나리오로 인해 발생할 수 있습니다.

  • 트러스트. 인증되는 사용자가 신뢰할 수 있는 도메인에 있는 경우 로컬 도메인 컨트롤러가 애플리케이션 서버에 대한 응답을 제공하기 전에 로컬 도메인 컨트롤러가 신뢰할 수 있는 도메인 컨트롤러의 응답을 기다려야 하기 때문에 더 긴 지연이 발생할 수 있습니다.

  • 네트워크 대기 시간. 네트워크 대기 시간은 MaxConcurrentApi 병목 상태를 유발하는 데 중요한 역할을 할 수도 있습니다. 이 문제는 MaxConcurrentApi 세마포가 시간 기반 시간 제한 카운터를 사용하여 클라이언트가 레거시 인증을 무기한 기다리지 않도록 하는 경우에 발생할 수 있습니다.

  • 배치. 네트워크 대기 시간이 존재하고 MaxConcurrentApi 스레드를 완료할 때 지연 및 병목 현상이 발생하는 경우 일반적인 솔루션은 네트워크 대기 시간을 줄일 수 있도록 서버를 동일한 물리적 위치에 배치하는 것입니다. 예를 들어 신뢰할 수 있는 도메인에 Microsoft Exchange CAS 서버가 있고 사용자의 도메인이 다른 지역 또는 Active Directory 사이트에 있는 도메인 모델에서는 사용자의 도메인 컨트롤러를 Exchange CAS 서버 및 해당 도메인 컨트롤러와 동일한 물리적 위치 및 Active Directory 사이트에 배치하는 것을 의미합니다.

  • 가능한 다운스트림 지연. Semaphore Waiters 카운터 값이 항상 0보다 크고 Semaphore Holders 값이 해당 서버의 MaxConcurrentApi 설정보다 작으면 해당 서버에 병목 상태가 없습니다. 이 경우 호스트 컴퓨터 정규화된 도메인 이름으로 나열된 카운터 이름에 인용된 도메인 컨트롤러를 찾습니다. 해당 도메인 컨트롤러의 세마포 웨이터세마포 홀더 성능 데이터를 검토해야 합니다.

  • 부하 또는 네트워크 구성의 변경 내용. 서비스 중이거나 네트워크 구성에서 로드가 변경되면 네트워크 대기 시간이 발생할 수 있으며 올바른 MaxConcurrentApi 설정을 다시 측정해야 할 수 있습니다. 레거시 인증 볼륨이 MaxConcurrentApi 설정을 검사하는 범위까지 표시되는 환경의 경우 Net Logon 성능 개체 카운터를 지속적으로 모니터링하고 검토하는 것이 좋습니다. 예약된 사용자 지정 Perfmon.msc 데이터 수집기를 사용하거나 Microsoft System Center Operations Manager를 사용하거나 다른 방법을 사용하여 수행할 수 있습니다.

  • Windows Server 2008 최대값입니다. Windows Server 2008 이상 버전의 Windows에서 MaxConcurrentApi에 허용되는 최대 설정은 150입니다. 사용 중인 서버가 Windows Server 2008 R2를 실행하지 않는 경우 다음 기술 자료 문서에 설명된 핫픽스를 적용하여 사용 가능한 최대 150개 설정을 갖습니다.
    975363 인증된 서비스에 연결할 때 자격 증명을 묻는 메시지가 간헐적으로 표시되거나 시간 초과가 발생합니다.

  • Windows Server 2003 최대값입니다. Windows Server 2003 및 이전 버전에서 MaxConcurrentApi에 허용되는 최대 설정은 10입니다.

  • Windows Server 2012 이상 기본값입니다. maxConcurrentApi의 기본값은 Windows Server 2012 변경되었습니다. 멤버 서버 및 도메인 컨트롤러의 경우 10입니다. 멤버 워크스테이션의 경우 1로 유지됩니다.

  • Windows Server 2003 및 성능 카운터. Windows Server 2003의 원래 릴리스에는 Net Logon 성능 카운터가 포함되어 있지 않습니다. 핫픽스를 적용하여 추가할 수 있습니다.

전체 NTLM 인증 부하를 줄이고 궁극적으로 MaxConcurrentApi 세마포 사용 수를 줄이려면 반복적이고 지속적인 NTLM 인증을 수행하는 권한이 없거나 알 수 없는 클라이언트 또는 서비스를 식별하는 것이 유용할 수 있습니다. 이러한 방식으로 반복 인증은 Net Logon 서비스 디버그 로깅을 사용하여 식별할 수 있습니다. Netlogon.log 파일을 사용하여 Net Logon 서비스를 디버그하는 방법에 대한 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 확인합니다.
109626 Net Logon 서비스에 대한 디버그 로깅 사용

Security System-Wide Statistics 개체의 NTLM 인증에 대한 Perfmon.msc 카운터는 MaxConcurrentApi 추적 스레드의 사용 횟수를 반영하지 않습니다. Net Logon 성능 카운터와 NTLM 인증 카운터 증가에 표시되는 MaxConcurrentApi 세마포 사용량 간에는 일대일 상관 관계가 없습니다. NTLM 인증 카운터는 최상의 MaxConcurrentApi 값을 결정하는 데 유용하지 않습니다.

또한 MaxConcurrentApi와 관련된 레거시 인증 성능 시간 제한은 표시되지만 Net Logon 카운터 이외의 성능 카운터에는 반영되지 않을 수 있습니다. 즉, MaxConcurrentApi 부하가 많고 사용자에게 문제가 있어도 CPU 사용 및 디스크 및 네트워크 사용과 같은 다른 성능 메트릭은 부하가 표시되지 않을 수 있습니다.

클라이언트가 대신 domainname\username제출 <null>\username 중임을 나타내는 Net Logon 서비스 디버그 로그에 항목이 있는 도메인 컨트롤러에서 추가 최소화 절차를 수행할 수 있습니다. 이 절차는 Microsoft 기술 자료의 다음 문서에 설명되어 있습니다.
923241 Active Directory 도메인 컨트롤러에 외부 트러스트가 많은 경우 Lsass.exe 프로세스가 응답을 중지할 수 있습니다.