다음을 통해 공유


Windows Server Update Services 모범 사례

이 문서에서는 WSUS의 디자인 또는 구성 제한으로 인해 성능이 저하되는 구성을 방지하기 위한 팁을 제공합니다.

원래 제품 버전: Configuration Manager(현재 분기), Windows Server Update Services
원본 KB 번호: 4490414

용량 제한

WSUS는 서버당 100,000개의 클라이언트(Configuration Manager를 사용하는 경우 150,000개의 클라이언트)를 지원할 수 있지만 이 제한에 근접하지 않는 것이 좋습니다.

대신 동일한 SQL Server 데이터베이스를 공유하는 2-4개 서버의 구성을 사용하는 것이 좋습니다. 이러한 방식을 통해 안전한 수를 처리할 수 있습니다. 한 서버가 다운되는 경우 최신 제로 데이 익스플로잇에 대해 업데이트해야 하는 동안은 어떤 클라이언트도 업데이트할 수 없기 때문에 곧바로 주말을 반납해야 하는 건 아닙니다.

또한 공유 데이터베이스 시나리오는 검사가 쇄도하는 것을 방지합니다.

많은 클라이언트가 WSUS 서버를 변경하고 서버가 데이터베이스를 공유하지 않는 경우 검색이 쇄도할 수 있습니다. WSUS는 데이터베이스의 활동을 추적하므로 둘 다 클라이언트가 마지막으로 검사한 이후 변경된 내용을 알고 그 이후로 업데이트된 메타데이터만 보냅니다.

클라이언트가 다른 데이터베이스를 사용하는 다른 WSUS 서버로 변경하는 경우 전체 검사를 수행해야 합니다. 전체 검사를 수행하면 큰 메타데이터 전송이 발생할 수 있습니다. 특히 WSUS 서버가 올바르게 유지 관리되지 않는 경우 이러한 시나리오에서 클라이언트당 1GB보다 큰 전송이 발생할 수 있습니다. 클라이언트가 WSUS 인스턴스와 통신할 때 오류를 일으킬 만큼 충분한 부하를 생성할 수 있습니다. 그리고 클라이언트는 이 경우에 반복적으로 다시 시도합니다.

데이터베이스 공유는 클라이언트가 동일한 DB를 사용하는 다른 WSUS 인스턴스로 전환할 때 검사 페널티가 발생하지 않음을 의미합니다. 부하 증가는 데이터베이스 전환에 대해 지불하는 큰 페널티가 아닙니다.

Configuration Manager 클라이언트 검사는 독립 실행형 자동 업데이트보다 WSUS에 더 많은 수요를 제공합니다. Configuration Manager는 규정 준수 검사를 포함하므로 거부를 제외한 모든 상태에 있는 모든 업데이트를 반환하는 조건을 사용하여 검사를 요청합니다.

자동 업데이트 에이전트가 검사하거나 제어판 업데이트 확인을 선택하면 에이전트는 설치 승인된 업데이트만 검색하는 조건을 보냅니다. 반환되는 메타데이터는 일반적으로 Configuration Manager가 검사를 시작할 때보다 적습니다. 업데이트 에이전트는 데이터를 캐시하고 다음 검사 요청은 클라이언트 캐시에서 데이터를 반환합니다.

재활용 사용 안 함 및 메모리 제한 구성

WSUS는 데이터베이스에서 업데이트 메타데이터를 검색하는 내부 캐시를 구현합니다. 이 작업은 비용이 많이 들고 메모리를 많이 사용합니다. WSUSPool이 기본 프라이빗 제한 및 가상 메모리 제한을 초과할 때 WSUS(WSUSPool이라고 함)를 호스트하는 IIS 응용 프로그램 풀이 재활용될 수 있습니다.

풀이 재활용되면 캐시가 제거되고 다시 작성되어야 합니다. 이는 클라이언트가 델타 검사를 진행하는 경우에는 큰 문제가 되지 않습니다. 그러나 스캔 쇄도 시나리오로 끝나면 풀이 지속적으로 재활용됩니다. 또한 클라이언트는 HTTP 503 오류와 같은 검사 요청을 수행할 때 오류를 수신합니다.

기본 큐 길이를 늘리고 가상 및 전용 메모리 제한을 0으로 설정하여 사용하지 않도록 설정하는 것이 좋습니다. IIS는 29시간마다 응용 프로그램 풀의 자동 재활용, Ping 및 유휴 제한 시간을 구현하는데, 모두 사용하지 않도록 설정해야 합니다. 이러한 설정은 IIS 관리자>애플리케이션 풀> 에서 WsusPool을 선택한 다음 IIS 관리자의 오른쪽 창에서 고급 설정 링크를 클릭합니다.

다음은 권장 변경 내용에 대한 요약 및 관련 스크린샷입니다. 자세한 내용은 Configuration Manager 소프트웨어 업데이트 계획을 참조하세요.

설정 이름
큐 길이 2000(기본값인 1000에서 증가)
유휴 시간 제한(분) 0(기본값인 20에서 감소)
Ping 사용 False(기본값인 True에서)
전용 메모리 제한(KB) 0(무제한, 기본값인 1,843,200KB에서 증가)
표준 시간 간격(분) 0(재활용 방지 및 기본값인 1740에서 수정)

고급 설정 창의 설정 스크린샷.

약 17,000개의 업데이트가 캐시된 환경에서는 캐시가 안정화될 때까지(약 14GB) 빌드되므로 24GB 이상의 메모리가 필요할 수 있습니다.

압축을 사용할 수 있는지 확인합니다(대역폭을 절약하려는 경우).

WSUS는 Xpress 인코딩을 호출하는 압축 형식을 사용합니다. 업데이트 메타데이터에 대한 압축을 구현하므로 대역폭을 크게 절감할 수 있습니다.

Xpress 인코딩은 <httpCompression> 요소 및 레지스트리 설정에 따라 IIS ApplicationHost.config에서 이 줄과 함께 사용하도록 설정됩니다.

  • ApplicationHost.Config

    <scheme name="xpress" doStaticCompression="false" doDynamicCompression="true" dll="C:\Program Files\Update Services\WebServices\suscomp.dll" staticCompressionLevel="10" dynamicCompressionLevel="0" />

  • 레지스트리 키

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Update Services\Server\Setup\IIsDynamicCompression

둘 다 없는 경우 이 명령을 실행한 다음 IIS에서 WsusPool 애플리케이션 풀을 다시 시작하여 사용하도록 설정할 수 있습니다.

cscript "%programfiles%\update services\setup\DynamicCompression.vbs" /enable "%programfiles%\Update Services\WebServices\suscomp.dll"

Xpress 인코딩은 약간의 CPU 오버헤드를 추가하며 대역폭이 문제가 되지 않지만 CPU 사용량이 문제가 될 수 있는 경우 사용 해제할 수 있습니다. 다음 명령은 해제합니다.

cscript "%programfiles%\update services\setup\DynamicCompression.vbs" /disable

제품 및 범주 구성

WSUS를 구성할 때 배포하려는 제품 및 범주만 선택합니다. 나중에 포함해야 하는 범주 및 제품은 항상 동기화할 수 있습니다. 배포할 계획이 없을 때 추가하면 WSUS 서버의 메타데이터 크기와 오버헤드가 증가합니다.

Itanium 업데이트 및 기타 불필요한 업데이트 사용 안 함

Windows Server 2008 R2가 Itanium을 지원하는 마지막 버전이었기 때문에 더 이상 문제가 되지 않아야 합니다. 혹시 모를 상황에 대비해 언급해드립니다.

사용자 환경에서 스크립트를 사용자 지정하고 사용하여 Itanium 아키텍처 업데이트를 거부합니다. 또한 스크립트는 업데이트 제목에 미리 보기 또는 베타가 포함된 업데이트를 거부할 수 있습니다.

이로 인해 WSUS 콘솔의 응답성이 높아지지만 클라이언트 검사에는 영향을 주지 않습니다.

대체된 업데이트 거절 및 유지 관리 실행

WSUS가 더 잘 실행되도록 돕기 위해 할 수 있는 가장 중요한 작업 중 하나입니다. 대체된 업데이트를 계속 유지하는 것(예: 더 이상 배포하지 않는 경우)은 WSUS 성능 문제의 주요 원인입니다. 계속 배포하는 경우 계속 유지해도 됩니다. 사용을 완료한 후 제거합니다.

대체된 업데이트 및 기타 WSUS 유지 관리 항목의 감소에 대한 자세한 내용은 Microsoft WSUS 및 Configuration Manager SUP 유지 관리 문서에 대한 전체 가이드를 참조하세요.

WSUS에서 SSL 설정

기본적으로 WSUS는 클라이언트 통신에 SSL을 사용하도록 구성되지 않습니다. 첫 번째 설치 후 단계는 서버-클라이언트 통신 간의 보안을 보장하기 위해 WSUS에 SSL을 구성하는 것입니다.

다음 작업 중 하나를 해야 합니다.

  • 새 자체 서명 인증서 만들기 모든 클라이언트가 이 인증서를 신뢰해야 하기 때문에 이상적이지 않습니다.
  • 타사 인증서 공급자에서 하나를 가져옵니다.
  • 내부 인증서 인프라에서 하나를 가져옵니다.

인증서에는 짧은 서버 이름, FQDN 및 SAN 이름(별칭)이 있어야 합니다.

인증서를 설치한 후 그룹 정책(또는 Configuration Manager 소프트웨어 업데이트에 대한 클라이언트 구성 설정)을 업그레이드하여 WSUS 서버의 주소 및 SSL 포트를 사용합니다. 포트는 일반적으로 8531 또는 443입니다.

예를 들어 GPO 인 트라넷 Microsoft 업데이트 서비스 위치를 로 지정 합니다 <https://wsus.contoso.com:8531>.

시작하려면 Secure Sockets 계층 프로토콜을 사용하여 WSUS 보호를 참조하세요.

바이러스 백신 제외 구성

누적 업데이트 및 월별 롤업 정보

Windows OS 업데이트에 사용되는 월간 롤업누적 업데이트라는 용어가 표시될 수 있습니다. 서로 호환 가능합니다. 롤업은 부분적으로만 누적되는 Windows 7, Windows 8.1, Windows Server 2008 R2 및 Windows Server 2012 R2에 대해 게시된 업데이트를 참조합니다.

자세한 내용은 다음 블로그 게시물을 참조하세요.

Windows 10 및 Windows Server 2016 업데이트는 처음부터 누적되었습니다.

누적은 OS의 릴리스 버전을 설치하고, 최신 누적 업데이트만 적용하여 완전히 패치되도록 해야 한다는 것을 의미합니다. 이는 자사가 추구하는 방향이지만 이전 운영 체제에 대해서는 아직 이러한 업데이트가 없습니다.

Windows 7 및 Windows 8.1 경우 최신 월별 롤업을 설치한 후에도 더 많은 업데이트가 필요합니다. 다음은 거의 완전히 패치된 시스템을 사용하는 데 필요한 Windows 7 및 Windows Server 2008 R2의 예입니다.

다음 표에는 Windows 월별 롤업 및 누적 업데이트 목록이 포함되어 있습니다. Windows <버전> 업데이트 기록을 검색하여 찾을 수도 있습니다.

Windows 버전 업데이트
Windows 7 SP1 및 Windows Server 2008 R2 SP1 Windows 7 SP1 및 Windows Server 2008 R2 SP1 업데이트 기록
Windows 8.1 and Windows Server 2012 R2 Windows 8.1 및 Windows Server 2012 R2 업데이트 기록
Windows 10 및 Windows Server 2016 Windows 10 및 Windows Server 업데이트 기록
Windows Server 2019 Windows 10 및 Windows Server 2019 업데이트 기록

고려해야 할 또 다른 점은 모든 업데이트가 WSUS에 자동으로 동기화되도록 게시되지 않는다는 것입니다. 예를 들어 CD 주 누적 업데이트는 미리 보기 업데이트이며 WSUS와 동기화되지 않지만 대신 수동으로 가져와야 합니다. Windows 10 업데이트 서비스 케이던스월별 품질 업데이트 섹션을 참조하세요.

PowerShell을 사용하여 WSUS 서버에 연결

다음은 PowerShell 및 WSUS API를 시작하는 코드 예입니다. WSUS 관리 콘솔이 설치된 위치에서 실행할 수 있습니다.

[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")
$WSUSServer = 'WSUS'
# This is your WSUS Server Name
$Port = 8530
# This is 8531 when SSL is enabled
$UseSSL = $False
#This is $True when SSL is enabled
Try
{
    $Wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($WSUSServer,$UseSSL,$Port)
}
Catch
{
    Write-Warning "$($WSUSServer)<$($Port)>: $($_)"
    Break
}

참조