다음을 통해 공유


Configuration Manager 컬렉션에 대한 모범 사례

적용 대상: Configuration Manager(현재 분기)

일부 컬렉션 관리 지침은 모순될 수 있습니다. 예를 들어 성능상의 이유로 자주 업데이트되는 컬렉션 수를 제한해야 합니다. 그러나 대부분의 Configuration Manager 기능은 컬렉션에 따라 달라지므로 컬렉션을 자주 업데이트하는 것이 편리합니다. 컬렉션 및 컬렉션 평가를 디자인하고 구성할 때 성능 영향과 비즈니스 요구 사항을 신중하게 고려합니다.

Configuration Manager 컬렉션에 대해 다음 모범 사례를 사용합니다.

업데이트에 대한 유지 관리 기간 구성

Configuration Manager 이러한 디바이스에 소프트웨어를 설치할 수 있는 시간을 제한하도록 디바이스 컬렉션에 대한 유지 관리 기간을 구성할 수 있습니다. 유지 관리 기간을 너무 작게 구성하면 클라이언트가 중요한 소프트웨어 업데이트를 설치하지 않을 수 있습니다. 이 상태는 업데이트가 완화하는 문제에 클라이언트를 취약하게 만듭니다.

유지 관리 기간을 계획할 때 유의해야 할 중요한 고려 사항:

  • 기본 소프트웨어 업데이트 최대 실행 시간은 60분입니다.
  • Configuration Manager 업데이트를 설치할 수 있는지 여부를 계산하면 최대 런타임에 5분을 추가하여 다시 시작을 고려합니다.
  • 유지 관리 기간의 나머지 기간은 소프트웨어 업데이트의 최대 실행 시간보다 5분 이상 길어야 합니다.

빈번한 컬렉션 평가 방지

전체 컬렉션 평가는 대상 컬렉션뿐만 아니라 업데이트가 발생할 경우 컬렉션이 제한하는 컬렉션도 평가합니다. 또한 일정이 없는 컬렉션은 제한 컬렉션이 업데이트되는 경우에도 평가됩니다. 따라서 일부 컬렉션이 예상보다 더 자주 평가될 수 있습니다.

사용량이 많은 Configuration Manager 환경에서는 반복적인 컬렉션 평가를 방지하기 위해 일정을 축소하여 컬렉션 평가 성능을 향상시킬 수 있습니다. 심층 트리에서는 컬렉션이 트리에서 더 깊이 내려갈 때 컬렉션 평가 빈도를 줄일 수 있습니다. 상위 수준 컬렉션 평가는 하위 수준 컬렉션 평가도 트리거하기 때문입니다.

컬렉션 평가 그래프 이해

적절한 컬렉션 구조를 디자인할 수 있도록 컬렉션 평가 그래프의 작동 방식을 알고 있어야 합니다. 모든 컬렉션을 항상 업데이트하려면 전체 컬렉션 평가에 의존하지 마세요. 일정에 따라 증분 업데이트된 컬렉션이 업데이트되는 경우 증분 업데이트에 사용하도록 설정되지 않은 컬렉션을 참조하는 것은 업데이트되지 않을 수 있습니다. 증분 평가 중에 업데이트가 발생할 수 있으므로 전체 평가가 컬렉션을 업데이트하지 않아 해당 주기에 대한 컬렉션 평가 그래프가 종료될 수 있습니다. 이 경우 참조 컬렉션 평가가 발생하지 않습니다. 자세한 내용은 컬렉션 평가 그래프를 참조하세요.

증분 업데이트 제한

많은 컬렉션에 대해 증분 업데이트를 사용하도록 설정하면 평가 지연이 발생할 수 있습니다. 증분 업데이트된 컬렉션 수를 200개로 제한하는 것이 가장 좋습니다. 정확한 숫자는 다음에 따라 달라집니다.

  • 총 컬렉션 수
  • 계층 구조에서 추가 및 변경되는 새 리소스의 빈도
  • 계층 구조의 클라이언트 수
  • 계층 구조에서 컬렉션 멤버 자격 규칙의 복잡성

증분 평가 주기가 구성된 업데이트 빈도보다 오래 걸리는 경우 Configuration Manager 컬렉션 평가를 지속적으로 처리하므로 시스템 성능에 영향을 줄 수 있습니다. 증분 업데이트된 컬렉션 수를 줄이거나 증분 평가 주기 사이의 시간을 늘입니다.

증분 컬렉션의 잠재적 영향을 감안할 때 컬렉션을 만들고 업데이트 일정을 할당하기 위한 정책 또는 절차를 갖는 것이 중요합니다. 정책 고려 사항의 예는 다음과 같습니다.

  • 보안 범위 지정, 클라이언트 설정 및 유지 관리 기간에 사용되는 컬렉션에 대해서만 증분 업데이트를 사용합니다. 이러한 컬렉션 업데이트는 클라이언트 동작 및 리소스 액세스에 영향을 줍니다.
  • 라이선스 승인이 없는 애플리케이션의 경우 애플리케이션을 기존 컬렉션에 보급하고 전역 조건을 사용하여 가용성을 제한합니다.
  • 전체 컬렉션 업데이트가 예약된 다른 컬렉션에 적합한 기간을 간략하게 설명합니다.

CAS에서 큰 트리 평가 방지

Configuration Manager 환경에서 CAS(중앙 관리 사이트)는 컬렉션 멤버 자격을 평가하지 않습니다. 기본 사이트는 컬렉션을 평가하는 유일한 사이트입니다. 보조 사이트는 기본 사이트에서 복제하는 데이터만 사용하는 프록시 역할을 합니다.

컬렉션 업데이트를 요청하기 위해 CAS는 각 기본 사이트에 요청을 보냅니다. 기본 사이트는 컬렉션을 평가하고 결과를 CAS로 다시 보냅니다. 컬렉션 평가 결과는 모든 컬렉션 평가 지침이 모든 사이트에 복제되고, 모든 사이트가 모든 컬렉션을 평가하고, 모든 데이터가 CAS로 반환되고 결합된 후에만 표시됩니다.

다음 다이어그램은 CAS가 수동 컬렉션 업데이트를 요청할 때의 흐름을 보여 줍니다.

CAS에서 수동 컬렉션 업데이트

여러 기본 사이트가 있는 CAS의 컬렉션 업데이트는 시간이 오래 걸릴 수 있습니다. 컬렉션이 적시에 평가되지 않으면 요청을 반복하는 것이 좋습니다.

컬렉션 평가 스레드가 시작되고 평가 그래프를 로드하면 컬렉션 평가 그래프가 비어 있는 때까지 평가가 계속됩니다. 그런 다음 스레드가 종료되고 다음 평가에 사용할 수 있게 됩니다. 그러나 스레드가 컬렉션을 평가하는 동안 다른 컬렉션 평가 주기가 큐에 대기하는 경우 스레드는 즉시 다시 시작하여 "누락된" 주기의 평가를 시도합니다.

각 평가 메서드는 자체 스레드에서 실행됩니다. 스레드 내에서 Configuration Manager 동일한 컬렉션의 그래프를 두 번 이상 시도할 수 있습니다. 그런 다음 Configuration Manager 두 번째 및 이후 요청을 삭제합니다.

이러한 시나리오를 방지하려면 특히 여러 사이트가 있는 CAS에서 작업할 때 큰 트리에 대한 수동 수집 평가를 피합니다.

컬렉션 깊이 및 상호 참조 고려

비즈니스 요구 사항과 성능 간의 균형을 맞추려면 만드는 컬렉션 구조와 다른 컬렉션에 대한 종속성을 이해하는 것이 중요합니다. 다른 컬렉션을 참조하는 하나 이상의 컬렉션을 참조하는 규칙을 사용하여 컬렉션을 만드는 경우 이러한 컬렉션은 모두 평가되어 컬렉션의 멤버 자격을 만듭니다.

Configuration Manager 컬렉션 포함 및 제외 규칙을 사용하면 사용자 지정 WQL 쿼리를 작성하는 것보다 컬렉션을 더 쉽게 참조할 수 있습니다. 그러나 포함 및 제외 컬렉션을 사용하면 고성능 통행료가 발생하는 경우 대신 WQL 쿼리 메서드를 사용할 수 있습니다. 다음 예제 쿼리를 사용하고 예제 컬렉션 ID XYZ0003F 를 포함하거나 제외할 컬렉션의 ID로 바꿉니다.

포함되는 사항은 다음과 같습니다.

Select * from SMS_R_System where SMS_R_System.ResourceId in (select ResourceID from SMS_CM_RES_COLL_XYZ0003F)

제외:

Select * from SMS_R_System where SMS_R_System.ResourceId not in (select ResourceID from SMS_CM_RES_COLL_XYZ0003F)

CEViewer를 사용하여 컬렉션 평가 모니터링

CEViewer(컬렉션 평가 뷰어)를 사용하여 평가되는 컬렉션 수와 각 컬렉션을 업데이트하는 데 걸리는 기간을 모니터링할 수 있습니다. CEViewer는 사이트 서버의 CD.Latest 폴더에 있습니다.

Configuration Manager 버전 2010부터 이 기능은 콘솔에 기본 제공됩니다. 자세한 내용은 컬렉션 평가를 보는 방법을 참조하세요.

SQL과 유사한 검사를 수동으로 수행하려면 다음 쿼리를 사용할 수 있습니다.

SELECT [t2].[CollectionName], [t2].[SiteID], [t2].[value] AS [Seconds], [t2].[LastIncrementalRefreshTime], [t2].[IncrementalMemberChanges] AS [IncChanges], [t2].[LastMemberChangeTime] AS [MemberChangeTime]
FROM (
    SELECT [t0].[CollectionName], [t0].[SiteID], DATEDIFF(Millisecond, [t1].[IncrementalEvaluationStartTime], [t1].[LastIncrementalRefreshTime]) * 0.001 AS [value], [t1].[LastIncrementalRefreshTime], [t1].[IncrementalMemberChanges], [t1].[LastMemberChangeTime], [t1].[IncrementalEvaluationStartTime], v1.[RefreshType]
    FROM [dbo].[Collections_G] AS [t0]
    INNER JOIN [dbo].[Collections_L] AS [t1] ON [t0].[CollectionID] = [t1].[CollectionID]
    inner join v_Collection v1 on [t0].[siteid] = v1.CollectionID
    ) AS [t2]
WHERE ([t2].[IncrementalEvaluationStartTime] IS NOT NULL) AND ([t2].[LastIncrementalRefreshTime] IS NOT NULL) and (refreshtype='4' or refreshtype='6')
ORDER BY [t2].[value] DESC