시스템 수준 병목 상태
이 항목에서는 BizTalk Server 솔루션의 성능에 영향을 미칠 수 있는 일반적인 시스템 수준 병목 상태를 해결하는 방법을 설명합니다.
기준 구성의 스냅샷 만들기
다음 정보를 수집하면 시스템 수준 병목 상태를 수정하는 데 사용할 수 있는 기준 구성의 스냅샷 제공할 수 있습니다.
설명서 수집
시나리오의 아키텍처 및 인프라 설명서를 검토합니다.
기준 보안 분석기 실행
기준 보안 분석기를 실행하려면 다음 단계를 수행합니다.
Microsoft 기준 보안 분석기를 사용합니다.
도메인 관리자 계정을 사용하여 BizTalk Server 호스팅하는 동일한 네트워크의 컴퓨터에 로그온하고 컴퓨터를 SQL Server.
현재 컴퓨터에 Microsoft 초기 계획 보안 분석기를 설치합니다(예: BizTalk Server 컴퓨터 또는 별도의 컴퓨터 중 하나).
각 BizTalk Server 및 SQL Server 컴퓨터의 이름 또는 IP 주소를 매개 변수로 지정하여 별도의 검사(검사 시작)를 실행합니다.
%userprofile%\SecurityScans 디렉터리에서 각 보안 보고서(.mbsa 파일)를 복사합니다.
BizTalk Server 모범 사례 분석기 실행
다음 단계에 따라 BizTalk Server 모범 사례 분석기를 실행합니다.
BizTalk Server 관리자 보안 그룹의 일부인 사용자 계정을 사용하여 BizTalk Server 노드에 로그온합니다.
현재 컴퓨터에 BizTalk Server 모범 사례 분석기를 설치합니다.
도구를 실행하고 보고서를 저장합니다.
MSInfo32를 실행하고 결과를 저장합니다.
MSInfo32를 실행하려면 다음 단계를 수행합니다.
도메인 또는 로컬 관리자 계정을 사용하여 각 BizTalk Server 로그온하고 컴퓨터를 SQL Server.
명령 프롬프트를 시작하고 디렉터리를 컴퓨터의 %windir%\system32 디렉터리로 변경합니다.
명령 프롬프트에서 MSinfo32.exe 실행합니다.
파일 메뉴를 클릭하고 내보낼 내보내기 메뉴 항목을 선택하여 컴퓨터 구성을 저장합니다.
BizTalk Server 내보내고 컴퓨터 TCP/IP 레지스트리 설정을 SQL Server.
다음 단계에 따라 BizTalk Server 저장하고 TCP/IP 레지스트리 설정을 SQL Server.
명령 프롬프트를 시작하고 디렉터리를 컴퓨터의 %windir%\system32 디렉터리로 변경합니다.
명령 프롬프트에서 Regedit.exe 실행합니다.
레지스트리에서 다음 키로 이동합니다.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] (network settings)
이 키를 마우스 오른쪽 단추로 클릭하고 내보내 기를 선택하여 레지스트리 키를 파일로 내보냅니다.
BizTalk 구성 파일 수집
각 BizTalk Server 노드에서 BizTalk Server 설치 폴더(예: C:\Program Files\Microsoft BizTalk Server 2010)에 있는 BizTalk Server 구성 파일, BTSNTSvc.exe.config 파일(또는 64비트 호스트의 BTSNTSvc64.exe.config)을 수집합니다.
.NET 구성 파일 수집
각 BizTalk Server 노드에서 machine.config 수집하고 4.0 구성 파일을 web.config .NET Framework. 다음 위치에서 구성 파일을 찾을 수 있습니다.
32비트: %windir%\Microsoft.NET\Framework\v4.0.30319\CONFIG 폴더
64비트: %windir%\Microsoft.NET\Framework64\v4.0.30319\CONFIG 폴더
BizTalk MsgBoxViewer 도구를 사용하여 MessageBox 데이터베이스에 대한 정보 수집
BizTalk MsgBoxViewer 도구를 사용하여 MessageBox 데이터베이스에 대한 정보를 수집하려면 다음 단계를 수행합니다.
BizTalk 상태 모니터 사용할 수 있는 BizTalk MsgBoxViewer 도구를 다운로드합니다.
BizTalk Server 관리자 보안 그룹의 일부인 사용자 계정으로 BizTalk Server 컴퓨터에 로그온합니다.
MsgBoxViewer.exe BizTalk Server 컴퓨터에 복사합니다.
도구를 시작합니다.
수집할 선택적 정보 탭을 클릭한 다음 모든 정보 선택을 클릭합니다.
시작 을 클릭하여 수집합니다.
상태 레이블에 최종 컬렉션 메시지가 표시되면 MsgBoxViewer.exe 실행 파일이 포함된 폴더로 전환하고 결과 보고서(.htm) 및 로그 파일을 복사합니다.
솔루션에 사용되는 모든 구성 요소에 대한 소스 코드 수집 및 저장
모든 구성 요소(예: 오케스트레이션, 사용자 지정 파이프라인 구성 요소 및 도우미 구성 요소 코드)에 대한 소스 코드를 별도의 파일 공유에 저장합니다.
초기 문제 해결
BizTalk Server 솔루션의 특정 구성 요소가 있는데, 사용하지 않으면 BizTalk 솔루션의 전체 크기 또는 디자인에 관계없이 성능 문제가 발생합니다. BizTalk 솔루션의 전체 병목 상태 분석에 참여하기 전에 일부 "일반적인 용의자"를 배제하기 위해 다음 예비 문제 해결 작업을 완료해야 합니다.
추적 호스트 instance 실행 중인지 확인 - 추적 호스트 instance MessageBox 데이터베이스의 TrackingData 테이블에서 BizTalkDTADb 및/또는 BAMPrimaryImport 데이터베이스 테이블로 BAM 및 HAT 데이터를 모두 이동해야 합니다. 추적 호스트 instance 실행되고 있지 않으면 추적 데이터가 MessageBox 데이터베이스에 누적되고 BizTalk Server 솔루션의 성능에 부정적인 영향을 줍니다.
ENTSSO(Enterprise Single Sign-On) 서비스가 모든 BizTalk Server 컴퓨터에서 실행되고 있는지 확인합니다. BizTalk 호스트 인스턴스는 ENTSSO 서비스의 로컬로 실행되는 instance 대한 종속성을 유지 관리합니다. ENTSSO 서비스가 BizTalk Server 실행되고 있지 않으면 서버의 호스트 인스턴스도 실행할 수 없습니다.
SQL Server 에이전트 서비스가 모든 SQL Server 컴퓨터에서 실행되고 있는지 확인합니다. BizTalk SQL Server 에이전트 작업을 실행하려면 SQL Server 에이전트 서비스가 실행 중이어야 합니다. 이러한 작업은 중요한 기능을 수행하여 서버를 작동하고 정상 상태로 유지합니다.
BizTalk SQL Server 에이전트 작업이 예외 없이 사용하도록 설정되고 실행되는지 확인합니다. SQL Server 에이전트 서비스가 실행 중이더라도 모든 기본 BizTalk SQL Server 에이전트 작업을 사용하도록 설정하고 성공적으로 실행해야 합니다.
BizTalk Server 및 SQL Server 이벤트 로그 확인 - BizTalk Server 또는 SQL Server 이벤트 로그를 커서로 검사하면 진단하고 resolve 데 상당한 시간이 걸릴 수 있는 문제가 나타날 수 있습니다.
BizTalk Server 모범 사례 분석기 실행 - BizTalk Server 모범 사례 분석기는 BizTalk Server 배포를 검사하고 모범 사례 표준과 관련된 문제 목록을 생성합니다. 이 도구는 WMI(Windows Management Instrumentation) 클래스, SQL Server 데이터베이스 및 레지스트리 항목과 같은 다양한 정보 원본에서 데이터를 수집하여 구성 수준 확인을 수행합니다. 그런 다음 데이터는 배포 구성을 평가하는 데 사용됩니다. 이 도구는 읽기 및 보고만 하고 시스템 설정을 수정하지 않으며 자체 튜닝 도구가 아닙니다. BizTalk Server 모범 사례 분석기를 다운로드합니다.
높은 수준의 시스템 병목 현상
이 섹션에서는 BizTalk Server 솔루션에 있을 수 있는 시스템 수준 병목 현상과 가능한 완화 전략에 대해 설명합니다.
디스크 I/O 병목 현상
디스크 I/O는 물리적 디스크 또는 서버에 설치된 여러 디스크에서 애플리케이션이 수행하는 읽기 및 쓰기 작업의 수를 나타냅니다. 디스크 I/O 및 관련 병목 상태를 유발할 수 있는 일반적인 활동에는 장기 실행 파일 I/O 작업, 데이터 암호화 및 암호 해독, 데이터베이스 테이블에서 불필요한 데이터 읽기, 과도한 페이징 작업으로 이어질 수 있는 물리적 메모리 부족 등이 있습니다. 디스크 속도는 디스크 I/O 병목 상태를 평가할 때 고려해야 할 또 다른 요소입니다. 빠른 디스크는 향상된 성능을 제공하고 디스크 I/O 병목 상태를 줄이는 데 도움이 됩니다.
아래 표에서는 BizTalk Server 솔루션에 대한 디스크 하위 시스템을 계획할 때 고려해야 할 요소를 제공합니다.
디스크 하위 시스템 요소 | 세부 정보 |
---|---|
디스크 메모리 캐시 및 사용 가능한 실제 메모리 | 실제 메모리가 제한됨에 따라 메모리가 디스크에 캐시되므로 사용 가능한 충분한 양의 메모리가 있는지 확인합니다. 메모리가 부족하면 디스크에 더 많은 페이지가 기록되어 디스크 활동이 증가합니다. 또한 페이징 파일을 적절한 크기로 설정해야 합니다. 추가 디스크 메모리 캐시는 디스크 I/O 요청의 최대값을 오프셋하는 데 도움이 됩니다. 그러나 대용량 디스크 메모리 캐시는 스핀들이 부족하고 스핀들이 충분한 경우 큰 디스크 메모리 캐시의 필요성을 부정할 수 있는 문제를 해결하는 일이 거의 없다는 사실에 유의해야 합니다. 최적의 성능을 위해 Windows 페이징 파일을 구성하는 방법에 대한 자세한 내용은 운영 체제 성능 최적화 항목의 "최적의 성능을 위해 Windows PAGEFILE 구성" 섹션을 참조하세요. |
스토리지 컨트롤러 유형 | 배터리 지원 캐시가 있는 경우 쓰기 캐싱을 사용하도록 설정하여 트랜잭션 로그 파일 볼륨 및 데이터베이스 볼륨에서 디스크 쓰기 성능을 향상시킵니다. 쓰기 캐싱은 쓰기 캐싱을 사용하도록 설정하지 않고 응답 시간이 10~20ms인 것과 달리 쓰기 I/O 요청에 대해 2ms의 응답 시간을 제공합니다. 쓰기 캐싱을 사용하도록 설정하면 클라이언트 쓰기 요청의 응답성이 크게 향상됩니다. 읽기 캐싱은 트랜잭션 로그 파일에서만 발생하는 순차 디스크 읽기에만 유용하기 때문에 BizTalk Server 시나리오에서 성능을 향상시키지 않습니다. 트랜잭션 로그 파일은 데이터베이스 복원 후 또는 서버가 제대로 종료되지 않은 경우와 같이 재생 중인 경우에만 읽습니다. 캐시가 클수록 더 많은 데이터를 버퍼링할 수 있으므로 더 긴 포화 기간을 수용할 수 있습니다. 컨트롤러에서 캐시 페이지 크기를 구성할 수 있는 경우 4KB로 설정해야 합니다. 8KB와 같은 더 큰 크기는 4KB I/O 요청이 전체 캐시 페이지 8KB를 차지하므로 캐시가 낭비되므로 사용 가능한 캐시를 절반으로 줄입니다. |
스핀 들 | 스핀들은 용량보다 더 중요하며, 스핀들이 많은 수의 임의 I/O 요청을 지원하는 경우 BizTalk Server 성능이 향상됩니다. 스핀들 오류가 발생하더라도 충분한 I/O를 사용할 수 있도록 총 사용률을 80% 이하로 계획합니다. |
Raid | 사용하는 RAID 솔루션은 환경에 적합한 비용 및 성능 절차를 기반으로 해야 합니다. 따라서 특정 데이터 스토리지 요구 사항에 대해 둘 이상의 유형의 RAID 솔루션을 권장할 수 있습니다. 일반적인 권장 사항은 다음과 같습니다. - BizTalk Server 데이터베이스에 Raid-1+0(미러된 집합의 스트라이프 집합)을 사용합니다. - 트랜잭션 로그 파일 볼륨에 Raid-1(패리티 없이 미러된 집합)을 사용합니다. - 일반적으로 Raid 5는 다른 Raid 구성에 비해 최적의 안정성, 가용성 및 성능을 제공하지 않으므로 Raid 5(분산 패리티가 있는 스트라이프 집합)는 권장되지 않습니다. - 영구적인 데이터 손실 가능성으로 인해 raid-0(패리티가 없는 스트라이프 집합) 구성은 BizTalk Server 프로덕션 환경에서 사용해서는 안 됩니다. |
버스 종류 | 처리량이 높을수록 성능이 향상됩니다. 일반적으로 SCSI 버스는 IDE 또는 ATA 버스보다 더 나은 처리량과 확장성을 제공합니다. 다음 수식을 사용하여 버스 유형에 대한 이론적 처리량 제한을 결정할 수 있습니다. (버스 속도(비트) / 바이트당 8비트) X 작동 속도(MHz) = 처리량(MB/s) 별도의 I/O 버스에 여러 드라이브를 배치하여 디스크 I/O 성능을 향상시킬 수도 있습니다. |
디스크 I/O 병목 상태를 측정하기 위한 성능 카운터
참고
디스크 성능 병목 상태를 분석하려고 할 때는 항상 실제 디스크 카운터를 사용해야 합니다. 그러나 소프트웨어 RAID를 사용하는 경우 논리 디스크 카운터를 사용해야 합니다. 논리 디스크 및 실제 디스크 카운터의 경우 이러한 각 카운터 개체에서 동일한 카운터를 사용할 수 있습니다. 논리 디스크 데이터는 볼륨 관리자(또는 관리자)에 의해 추적되고 실제 디스크 데이터는 파티션 관리자에 의해 추적됩니다.
다음 성능 카운터를 사용하여 시스템에 디스크 I/O 관련 병목 현상이 발생하는지 확인해야 합니다.
PhysicalDisk\Avg. 디스크 큐 길이
임계값: 스핀들 수에 2를 더한 값보다 높지 않아야 합니다.
Significance: 이 카운터는 샘플 간격 동안 선택한 디스크에 대해 큐에 대기된 읽기 및 쓰기 요청의 평균 수를 나타냅니다. 이 카운터는 데이터 버스트 및 최대 로드를 포함하여 동시성 데이터를 수집하는 데 유용합니다. 이러한 값은 통계를 사용하는 드라이버보다 낮은 플라이트 중인 요청 수를 나타냅니다. 즉, 요청이 반드시 큐에 대기되는 것은 아니지만 실제로 서비스 중이거나 완료되고 경로를 백업하는 중일 수 있습니다. 가능한 기내 위치는 다음과 같습니다.
SCSIport 또는 Storport 큐
OEM 드라이버 큐
디스크 컨트롤러 큐
하드 디스크 큐
하드 디스크에서 적극적으로 수신
PhysicalDisk\Avg. Disk Read Queue Length
임계값: 2보다 작아야 합니다.
Significance: 이 카운터는 샘플 간격 동안 선택한 디스크에 대해 큐에 대기된 평균 읽기 요청 수를 나타냅니다.
PhysicalDisk\Avg. Disk Write Queue Length
임계값: 2보다 작아야 합니다.
Significance: 이 카운터는 샘플 간격 동안 선택한 디스크에 대해 큐에 대기된 평균 쓰기 요청 수를 나타냅니다.
PhysicalDisk\Avg. Disk sec/Read
임계값: 특정 값이 없습니다.
10밀리초 미만(밀리초) = 양호
15~25ms = fair
25ms 이상 = 불량
Significance: 이 카운터는 디스크에서 데이터 읽기 작업의 평균 시간(초)을 나타냅니다. 이 숫자가 25밀리초(밀리초)보다 크면 디스크 시스템에서 디스크를 읽을 때 대기 시간이 발생합니다. BizTalk Server 호스팅하는 중요 업무용 서버의 경우 허용 가능한 임계값은 약 10ms보다 훨씬 낮습니다.
PhysicalDisk\Avg. Disk sec/Write
임계값: 특정 값이 없습니다.
10밀리초 미만(밀리초) = 양호
15~25ms = fair
25ms 이상 = 불량
Significance: 이 카운터는 디스크에 대한 데이터 쓰기 작업의 평균 시간(초)을 나타냅니다. 숫자가 25ms보다 크면 디스크 시스템에 디스크에 쓸 때 대기 시간이 발생합니다. BizTalk Server 호스팅하는 중요 업무용 서버의 경우 허용 가능한 임계값은 약 10ms보다 훨씬 낮습니다.
PhysicalDisk\Avg. Disk sec/Transfer
임계값: 18밀리초를 초과하면 안 됩니다.
Significance: 이 카운터는 평균 디스크 전송 시간을 초 단위로 나타냅니다. 이는 많은 양의 디스크 조각화, 느린 디스크 또는 디스크 오류를 나타낼 수 있습니다. Physical Disk\Avg. Disk sec/Transfer 및 Memory\Pages/sec 카운터의 값을 곱합니다. 이러한 카운터의 제품이 0.1을 초과하면 페이징에 디스크 액세스 시간이 10% 이상 걸리므로 더 많은 실제 메모리를 사용할 수 있어야 합니다.
PhysicalDisk\Disk Writes/sec
임계값: 제조업체의 사양에 따라 달라집니다.
Significance: 이 카운터는 디스크에 대한 쓰기 작업의 속도를 나타냅니다.
프로세서\% DPC 시간, % 인터럽트 시간 및 % 권한 있는 시간 - 인터럽트 시간 및 DPC(지연 프로시저 호출) 시간이 권한 있는 시간의 상당 부분인 경우 커널은 I/O 요청을 처리하는 데 상당한 시간을 소비합니다. 경우에 따라 다중 프로세서 시스템에서 적은 수의 CPU에 인터럽트 및 DPC 선호도를 구성하여 성능이 향상되어 캐시 지역성을 향상시킬 수 있습니다. 다른 경우에는 인터럽트 및 DPC 작업이 병목 상태가 되지 않도록 많은 CPU 간에 인터럽트 및 DPC를 배포하는 것이 가장 좋습니다. 인터럽트 필터 구성 도구를 사용하여 네트워크 어댑터 인터럽트를 다중 프로세서 컴퓨터의 특정 프로세서에 바인딩하는 방법에 대한 자세한 내용은 운영 체제 성능 최적화의 "인터럽트 필터 구성 도구를 사용하여 네트워크 어댑터 인터럽트를 다중 프로세서 컴퓨터의 특정 프로세서에 바인딩" 섹션을 참조하세요.
Processor\DPCs Queued / sec - DPC가 CPU 시간과 커널 리소스를 사용하는 방법을 측정합니다.
Processor\Interrupts / sec - 인터럽트에서 CPU 시간과 커널 리소스를 소비하는 방법에 대한 또 다른 측정값입니다. 최신 디스크 컨트롤러는 단일 인터럽트로 인해 여러 I/O 완료를 처리할 수 있도록 인터럽트 결합 또는 병합하는 경우가 많습니다. 물론 인터럽트 지연(따라서 완료)과 CPU 처리 시간 경제화 사이에는 절전 모드가 있습니다.
디스크 I/O 튜닝 옵션
디스크 I/O가 사용자 환경에서 병목 현상이라고 판단하는 경우 다음 기술을 사용하여 병목 상태를 완화할 수 있습니다.
디스크 조각 모음 -PageDefrag 유틸리티 에서 사용할 수 있는 를 사용하여 Windows 페이징 파일을 조각 모음하고 마스터 파일 테이블을 미리 할당합니다.
스트라이프 집합을 사용하여 여러 디스크에서 동시에 I/O 요청을 처리합니다. 미러된 볼륨을 사용하여 내결함성을 제공하고 I/O 성능을 향상합니다. 내결함성이 필요하지 않은 경우 빠른 읽기 및 쓰기를 위한 스트라이프 집합을 구현하고 스토리지 용량을 개선합니다. 스트라이프 집합을 사용하면 작업이 볼륨에 분산되고 전체 처리량이 증가하므로 디스크당 사용률이 줄어듭니다. 스트라이프 집합에 디스크를 추가해도 처리량이 증가하지 않는 경우 디스크 컨트롤러의 디스크 간 경합으로 인해 시스템에서 병목 현상이 발생할 수 있습니다. 이 경우 디스크 컨트롤러를 추가하면 부하를 분산하고 성능을 향상시키는 데 도움이 됩니다.
여러 드라이브 간에 워크로드 배포 - Windows 클러스터링 및 분산 파일 시스템은 여러 디스크 드라이브에서 부하 분산을 위한 솔루션을 제공합니다.
파일 압축 또는 암호화 사용 제한 - 파일 압축 및 암호화는 I/O 집약적 작업입니다. 반드시 필요한 경우에만 사용해야 합니다.
짧은 이름 만들기 사용 안 함 - Windows 3.x 클라이언트용 MS-DOS를 지원하지 않는 경우 짧은 이름을 사용하지 않도록 설정하여 성능을 향상시킵니다. 짧은 이름 만들기를 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 운영 체제 성능 최적화의 "짧은 파일 이름(8.3) 생성 사용 안 함" 섹션을 참조하세요.
마지막 액세스 업데이트 사용 안 함 - 기본적으로 NTFS는 디렉터리를 트래버스할 때마다 디렉터리에 대한 마지막 액세스의 날짜 및 타임스탬프를 업데이트합니다. 대규모 NTFS 볼륨의 경우 이 업데이트 프로세스로 인해 성능이 저하될 수 있습니다. 마지막 액세스 업데이트를 사용하지 않도록 설정하는 방법에 대한 자세한 내용은 운영 체제 성능 최적화의 "NTFS 마지막 액세스 업데이트 사용 안 함" 섹션을 참조하세요.
주의
증분 백업 유틸리티와 같은 일부 애플리케이션은 NTFS 업데이트 정보를 사용하며 NTFS 업데이트 정보가 없으면 제대로 작동하지 않습니다.
master 파일 테이블에 적절한 공간 예약 - 일반적으로 NTFS 볼륨에 저장된 파일 수에 따라 레지스트리에 NtfsMftZoneReservation 항목을 추가합니다. 레지스트리에 이 항목을 추가하면 시스템은 master 파일 테이블의 볼륨에 공간을 예약합니다. 이러한 방식으로 공간을 예약하면 master 파일 테이블이 최적으로 증가할 수 있습니다. NTFS 볼륨이 일반적으로 비교적 적은 수의 파일을 저장하는 경우 이 레지스트리 항목의 값을 기본값 1로 설정합니다. 일반적으로 NTFS 볼륨이 적당한 수의 파일을 저장하는 경우 2 또는 3 값을 사용하고, NTFS 볼륨에 상대적으로 많은 수의 파일이 포함된 경향이 있는 경우 4(최대값) 값을 사용할 수 있습니다. 그러나 이러한 값이 크면 시스템에서 master 파일 테이블에 대해 디스크의 훨씬 더 큰 부분을 예약하게 되므로 2보다 큰 설정을 테스트해야 합니다. 레지스트리에 NtfsMftZoneReservation을 추가하는 방법에 대한 자세한 내용은 운영 체제 성능 최적화의 "master 파일 테이블에 사용할 수 있는 공간 늘리기" 섹션을 참조하세요.
사용 가능한 가장 효율적인 디스크 시스템 사용 - 사용되는 실제 디스크 외에도 사용할 디스크 컨트롤러 및 케이블 연결 유형을 고려합니다. 또한 효율적인 디스크 하위 시스템은 디스크 I/O로 인한 프로세서 인터럽트 작업을 완화하기 위해 인터럽트 조정 또는 인터럽트 회피를 지원하는 드라이버를 제공해야 합니다.
적절한 RAID 구성을 사용하고 있는지 확인 합니다. 최적의 성능 및 내결함성을 위해 RAID 10(스트라이프 및 미러링)을 사용합니다. 단점은 RAID 10을 사용하는 데 비용이 많이 든다는 것입니다. 광범위한 쓰기 작업이 있는 경우 RAID 5를 사용하지 마십시오. BizTalk Server 환경에서 RAID를 구현하는 방법에 대한 자세한 내용은 BizTalk Server 데이터베이스 최적화의 "디스크 인프라" 섹션을 참조하세요.
데이터베이스 파티션 사용 고려 - 데이터베이스 병목 상태가 있는 경우 데이터베이스 파티션을 사용하고 디스크를 특정 테이블 및 트랜잭션 로그에 매핑하는 것이 좋습니다. 파티션의 주요 목적은 큰 테이블의 디스크 병목 상태를 극복하는 것입니다. 행 수가 많은 테이블이 있고 병목 현상의 원인을 파악하는 경우 파티션을 사용하는 것이 좋습니다. SQL Server 경우 파일 그룹을 사용하여 I/O 성능을 향상시킬 수 있습니다. 테이블을 파일 그룹과 연결한 다음 파일 그룹을 특정 하드 디스크와 연결할 수 있습니다. BizTalk Server 데이터베이스에 파일 그룹 최적화를 사용하는 방법에 대한 자세한 내용은 데이터베이스에 대한 파일 그룹 최적화를 참조하세요.
페이지 오류가 과도한 경우 실제 메모리를 추가하는 것이 좋습니다. 메모리에 대한 높은 값 : Pages/sec 성능 카운터는 과도한 페이징을 나타내면 디스크 I/0이 증가할 수 있습니다. 이 경우 디스크 I/O를 줄이고 성능을 높이기 위해 실제 메모리를 추가하는 것이 좋습니다.
RPM 등급이 높은 디스크를 사용하거나 SAN(스토리지 영역 네트워크) 디바이스를 사용하는 것이 좋습니다 . RPM 등급이 높은 디스크는 RPM 등급이 낮은 디스크에 비해 향상된 성능을 제공합니다. SAN 디바이스는 일반적으로 최상위 계층 성능을 제공하지만 가격 프리미엄을 제공합니다.
데이터베이스 성능 최적화의 권장 사항을 따릅니다. 이 항목에서는 BizTalk Server 구성 전후에 데이터베이스 성능을 최적화하기 위한 몇 가지 권장 사항을 제공합니다.
CPU 병목 상태
서버에서 실행되는 각 애플리케이션은 CPU의 시간 조각을 가져옵니다. CPU가 컴퓨터에서 실행되는 모든 프로세스를 효율적으로 처리할 수 있거나 오버로드될 수 있습니다. 프로세서 작업 및 스레드 만들기, 스레드 전환 및 컨텍스트 전환을 포함한 개별 프로세스의 활동을 검사하여 프로세서 워크로드 및 성능에 대한 인사이트를 얻을 수 있습니다.
CPU 병목 현상이 발생할 수 있습니다.
Processor\% Processor Time 성능 카운터의 값은 종종 75%를 초과합니다.
System\ Processor Queue Length 성능 카운터의 값은 일정 기간 동안 2 이상입니다.
Processor\% Privileged Time 또는 System\Context Switches/sec 성능 카운터의 값은 비정상적으로 높습니다.
Processor\ % Processor Time 성능 카운터 값이 높으면 큐가 발생하고 대부분의 시나리오에서 System\ Processor Queue Length 값도 높아집니다.
CPU 병목 상태를 측정하기 위한 성능 카운터
다음 성능 카운터를 사용하여 시스템에 CPU 관련 병목 현상이 발생하는지 확인해야 합니다.
Processor\% Processor Time
임계값: 85% 미만이어야 합니다.
Significance: 이 카운터는 프로세서 활동의 기본 지표입니다. 높은 값이 많은 경우 반드시 나쁘지는 않습니다. 그러나 Processor\% Privileged Time 또는 System\Processor Queue Length와 같은 다른 프로세서 관련 카운터가 선형적으로 증가하는 경우 높은 CPU 사용률을 조사할 가치가 있습니다.
Processor\% Privileged Time
임계값: 지속적으로 75%를 초과하는 수치는 병목 상태를 나타냅니다.
Significance: 이 카운터는 스레드가 권한 있는 모드에서 실행되는 시간의 백분율을 나타냅니다. 애플리케이션이 운영 체제 함수를 호출하는 경우(예: 파일 또는 네트워크 I/O를 수행하거나 메모리를 할당하기 위해) 이러한 운영 체제 함수는 권한 있는 모드로 실행됩니다.
Processor\% 인터럽트 시간
임계값: 프로세서에 따라 다릅니다.
Significance: 이 카운터는 프로세서가 하드웨어 인터럽트 수신 및 서비스하는 데 소요되는 시간을 나타냅니다. 이 값은 네트워크 어댑터와 같이 인터럽트를 생성하는 디바이스의 활동을 간접적으로 나타내는 지표입니다. 이 카운터의 급격한 증가는 잠재적인 하드웨어 문제를 나타냅니다.
System\Processor 큐 길이
임계값: 평균 값이 2보다 일관되게 높음은 병목 상태를 나타냅니다.
Significance: 프로세서보다 실행할 준비가 된 작업이 더 많으면 스레드가 큐에 대기합니다. 프로세서 큐는 다른 스레드가 현재 실행 중이므로 준비되었지만 프로세서에서 실행할 수 없는 스레드의 컬렉션입니다. 두 개 이상의 스레드가 지속되거나 반복되는 큐는 프로세서 병목 상태를 명확하게 나타냅니다. 이러한 경우 병렬 처리를 줄임으로써 더 많은 처리량을 얻을 수 있습니다.
프로세서\% 프로세서 시간 카운터와 함께 이 카운터를 사용하여 애플리케이션이 더 많은 CPU의 이점을 얻을 수 있는지 확인할 수 있습니다. 다중 프로세서 컴퓨터에서도 프로세서 시간에 대한 단일 큐가 있습니다. 따라서 다중 프로세서 컴퓨터에서 PQL(프로세서 큐 길이) 값을 워크로드를 서비스하는 프로세서 수로 나눕니다.
CPU가 매우 사용량이 많고(90% 이상 사용률) PQL 평균이 프로세서당 2보다 지속적으로 높은 경우 CPU를 추가하는 데 도움이 될 수 있는 프로세서 병목 현상이 발생할 수 있습니다. 또는 애플리케이션 수준에서 스레드 및 큐 수를 더 줄일 수 있습니다. 이로 인해 컨텍스트 전환이 줄어들고 컨텍스트 전환이 적어 CPU 부하를 줄이는 데 적합합니다. CPU 사용률이 낮은 PQL 값이 2 이상인 일반적인 이유는 프로세서 시간에 대한 요청이 임의로 도착하고 스레드가 프로세서에서 불규칙한 시간을 요구하기 때문입니다. 즉, 프로세서가 병목 상태가 아니라 애플리케이션 스레딩 논리를 개선해야 합니다.
System\Context Switches/sec
임계값: 일반적으로 프로세서당 초당 5,000개 미만의 컨텍스트 전환 속도는 걱정할 가치가 없습니다. 컨텍스트 전환 속도가 프로세서당 초당 15,000을 초과하면 컨텍스트 전환이 병목 상태가 될 수 있습니다.
Significance: 컨텍스트 전환은 우선 순위가 높은 스레드가 현재 실행 중인 우선 순위가 낮은 스레드를 선점하거나 우선 순위가 높은 스레드가 다른 스레드를 차단할 때 발생합니다. 많은 스레드가 동일한 우선 순위 수준을 공유하는 경우 높은 수준의 컨텍스트 전환이 발생할 수 있습니다. 이는 종종 시스템의 프로세서에 대해 경쟁하는 스레드가 너무 많다는 것을 나타냅니다. 프로세서 사용률과 컨텍스트 전환 수준이 모두 낮으면 스레드가 차단되는 경우가 많습니다.
CPU 병목 상태 해결
첫 번째 단계는 프로세서 시간이 과도하게 소비되는 프로세스를 식별하는 것입니다. Windows 작업 관리자 를 사용하여 프로세스 페이지의 CPU 열을 확인하여 높은 수준의 CPU 를 사용하는 프로세스를 식별 합니다 . 성능 모니터 Process\%Processor Time을 모니터링하고 모니터링할 프로세스를 선택하여 이를 확인할 수도 있습니다.
과도한 CPU 시간을 소비하는 프로세스를 결정하는 또 다른 강력한 도구는 VSTS(Visual Studio Team System) 제품군에서 사용할 수 있는 Visual Studio Team System Profiler입니다. Visual Studio 팀 시스템 프로파일러 사용에 대한 자세한 내용은 Visual Studio Team System 설명서를 참조하세요.
CPU가 병목 상태임을 확인한 후 다음을 비롯한 몇 가지 옵션이 있습니다.
다중 스레드 애플리케이션이 있는 경우 여러 프로세서를 추가합니다. 애플리케이션이 단일 스레드인 경우 더 강력한 프로세서로 업그레이드하는 것이 좋습니다.
컨텍스트 전환 속도가 높은 경우 프로세서 수를 늘리기 전에 프로세스의 스레드 수를 줄이는 것이 좋습니다.
CPU 사용률이 높은 애플리케이션을 분석하고 튜닝합니다. ADPLUS 유틸리티를 사용하여 실행 중인 프로세스를 덤프하고 Windbg를 사용하여 원인을 분석할 수 있습니다. 이러한 유틸리티는 Windows 디버깅 도구 키트의 일부입니다. Windows용 디버깅 도구에서 이러한 도구를 다운로드할 수 있습니다.
애플리케이션에서 생성된 계측 로그를 분석하여 최대 실행 시간이 걸리는 하위 시스템을 격리합니다. 코드 검토가 BizTalk Server 환경을 조정하는 것보다 더 유용한지 여부를 결정합니다.
참고
작업 관리자를 사용하거나 명령 프롬프트에서 애플리케이션의 프로세스 우선 순위 수준을 변경할 수 있지만 일반적으로 이를 방지해야 합니다.
메모리 병목 상태
메모리 관련 병목 상태를 평가할 때 불필요한 할당, 비효율적인 클린 및 부적절한 캐싱 및 상태 관리 메커니즘을 고려합니다. 메모리 관련 병목 상태를 resolve 코드를 최적화하여 이러한 문제를 제거한 다음 애플리케이션에 할당된 메모리 양을 조정합니다. 튜닝하는 동안 메모리 경합 및 과도한 페이징이 발생하는 경우 서버에 물리적 메모리를 추가해야 할 수 있습니다. 메모리가 낮으면 애플리케이션의 가상 주소 공간이 디스크로 이동/이동되는 페이징이 증가합니다. 페이징이 과도해지면 디스크 I/O가 증가하고 전체 시스템 성능에 부정적인 영향을 미칩니다.
다음과 같은 경우 메모리 병목 현상이 발생할 수 있습니다.
시스템 메모리 제한 또는 메모리를 해제하지 않는 애플리케이션으로 인해 Memory\Available MBytes 성능 카운터의 값이 낮습니다. 실행 중인 각 프로세스에 대한 Process\Working Set 성능 카운터의 값을 모니터링합니다. 프로세스가 활성화되지 않은 경우에도 Process\Working Set 값이 높게 유지되면 프로세스가 메모리를 정상적으로 해제하지 않음을 나타낼 수 있습니다.
Memory\Pages/sec 성능 카운터의 값이 높습니다. Memory\Pages Input/sec의 평균을 Memory\Page Reads/sec의 평균으로 나눈 값은 디스크 읽기당 페이지 수를 제공합니다. 이 값은 일반적으로 초당 5페이지를 초과해서는 안 됩니다. 초당 5페이지보다 큰 값은 시스템이 페이징하는 데 너무 많은 시간을 소비하고 있으며 더 많은 메모리가 필요하다는 것을 나타냅니다(애플리케이션이 최적화되었다고 가정).
메모리 병목 상태를 측정하기 위한 성능 카운터
다음 성능 카운터를 사용하여 시스템에 메모리 관련 병목 현상이 발생하는지 확인해야 합니다.
Memory\Available Mbytes
임계값: 설치된 RAM의 20~25% 미만의 일관된 값은 메모리 부족의 표시입니다.
Significance: 컴퓨터에서 실행되는 프로세스에 사용할 수 있는 실제 메모리의 양을 나타냅니다. 이 카운터는 마지막으로 관찰된 값만 표시합니다. 평균이 아닙니다.
Memory\Page Reads/sec
임계값: 5개 이상의 지속된 값은 읽기 요청에 대한 많은 수의 페이지 오류를 나타냅니다.
Significance: 이 카운터는 프로세스의 작업 집합이 사용 가능한 실제 메모리에 비해 너무 커서 메모리가 디스크에 페이지로 이동하게 됨을 나타냅니다. 각 작업에서 검색된 페이지 수와 관계없이 읽기 작업 수를 표시합니다. 값이 높을수록 메모리 병목 현상이 발생합니다.
페이지 읽기 작업의 낮은 비율이 실제 디스크\% 디스크 시간 및 실제 디스크\ 평균에 대한 높은 값과 일치하는 경우 디스크 큐 길이는 디스크 I/O 병목 상태일 수 있습니다. 큐 길이가 증가하여 페이지 읽기 속도가 감소하지 않으면 실제 메모리 부족으로 인해 메모리 병목 현상이 발생합니다.
Memory\Pages/sec
임계값: 5개 이상의 지속 값은 병목 상태를 나타냅니다.
Significance: 이 카운터는 하드 페이지 오류를 resolve 위해 디스크에서 페이지를 읽거나 디스크에 쓰는 속도를 나타냅니다. Physical Disk\Avg. Disk sec/Transfer 및 Memory\Pages/sec 성능 카운터의 값을 곱합니다. 이러한 값의 곱이 0.1을 초과하면 페이징은 디스크 액세스 시간의 10% 이상을 활용하며 이는 실제 메모리가 부족하다는 것을 나타냅니다.
Memory\Pool Nonpaged Bytes
임계값: 시스템 시작 시 해당 값에서 10% 이상 증가하려면 Memory\Pool Nonpaged Bytes 값을 확인합니다.
Significance: 시작 시 값에서 10% 이상 증가하는 것은 메모리 누수의 표시일 수 있습니다.
Server\Pool 비페이지 오류
임계값: 0이 아닌 일반 값은 병목 상태를 나타냅니다.
Significance: 이 카운터는 페이징되지 않은 풀의 할당이 실패한 횟수를 나타냅니다. 페이징되지 않은 풀에는 프로세스 커널 개체 테이블과 같이 디스크의 페이지 파일로 교환할 수 없는 프로세스의 가상 주소 공간의 페이지가 포함됩니다. 페이징되지 않은 풀의 가용성은 만들 수 있는 프로세스, 스레드 및 기타 개체 수를 결정합니다. 페이징되지 않은 풀에서 할당이 실패하는 경우 프로세스의 메모리 누수로 인해 발생할 수 있으며, 특히 프로세서 사용량이 그에 따라 증가하지 않은 경우에 발생할 수 있습니다.
Server\Pool 페이징 실패
임계값: 특정 값이 없습니다.
Significance: 이 카운터는 페이징된 풀의 할당이 실패한 횟수를 나타냅니다. 이 카운터의 양수 값은 컴퓨터에 실제 메모리가 부족하거나 Windows 페이징 파일이 너무 작다는 표시입니다.
Server\Pool Nonpaged Peak
임계값: 특정 값이 없습니다.
Significance: 서버가 한 지점에서 사용하도록 예약한 페이징되지 않은 풀의 최대 바이트 수입니다. 컴퓨터에 있어야 하는 실제 메모리의 양을 나타냅니다. 페이징되지 않은 풀은 실제 메모리에 상주해야 하고 다른 작업을 위해 남은 메모리가 있어야 하기 때문에 컴퓨터는 이 카운터에 대해 표시된 값의 4배에 달하는 실제 메모리를 설치해야 합니다.
Memory\Cache 바이트
임계값: 특정 값이 없습니다.
Significance: 다양한 부하 조건에서 캐시 크기를 모니터링합니다. 이 성능 카운터의 이 값은 정적 파일 캐시의 크기를 나타냅니다. 기본적으로 이 카운터는 사용 가능한 메모리의 약 50%를 사용하지만 사용 가능한 메모리가 축소되면 감소하여 시스템 성능에 영향을 줍니다.
Memory\Cache Faults/sec
임계값: 특정 값이 없습니다.
Significance: 이 카운터는 운영 체제가 파일 시스템 캐시에서 데이터를 찾는 빈도를 나타내지만 찾지 못합니다. 이 값은 되도록 작아야 합니다.
Cache\MDL 읽기 적중률 %
임계값: 이 값이 높을수록 파일 시스템 캐시의 성능이 향상됩니다. 값은 가능한 100%에 가깝습니다.
Significance: 이 카운터는 파일 시스템 캐시에 대한 MDL(메모리 설명자 목록) 읽기 요청의 백분율을 제공합니다. 여기서 캐시는 하드 디스크에서 읽기를 요구하지 않고 개체를 직접 반환합니다.
Process\Working Set
임계값: 특정 값이 없습니다.
Significance: 작업 집합은 현재 메모리에 로드된 메모리 페이지 집합(실제 + 가상)입니다. 시스템에 충분한 메모리가 있는 경우 디스크에 메모리를 페이지하는 디스크 작업을 수행할 필요가 없도록 작업 집합에 충분한 공간을 유지할 수 있습니다. 그러나 메모리가 부족한 경우 시스템은 프로세스에서 메모리를 제거하여 작업 집합을 줄이려고 시도하여 페이지 오류가 증가합니다. 페이지 오류 비율이 상승하면 시스템은 프로세스의 작업 집합을 늘리려고 합니다. 작업 집합에서 광범위한 변동을 관찰하는 경우 메모리 부족을 나타낼 수 있습니다. 작업 집합의 값이 높을수록 애플리케이션의 여러 어셈블리가 발생할 수도 있습니다. 전역 어셈블리 캐시에서 공유되는 어셈블리를 사용하여 작업 집합을 개선할 수 있습니다.
메모리 병목 상태 해결
메모리가 BizTalk Server 환경에서 병목 현상으로 확인되면 다음 방법 중 하나 이상을 사용하여 병목 상태를 resolve.
할당을 제어할 수 있는 경우 할당된 메모리 양을 조정합니다. 예를 들어 BizTalk Server, ASP.NET 및 SQL Server 대해 이를 조정할 수 있습니다.
Windows 페이징 파일의 크기를 늘리고 운영 체제 성능 최적화의 "최적의 성능을 위해 Windows PAGEFILE 구성" 섹션의 단계를 따릅니다.
사용되지 않는 서비스를 끕니다. 사용하지 않는 서비스를 중지하면 메모리가 정기적으로 저장되고 시스템 성능이 향상됩니다. 자세한 내용은 운영 체제 성능 최적화의 "필수가 아닌 서비스 사용 안 함" 섹션을 참조하세요.
불필요한 프로토콜 및 드라이버를 제거합니다. 유휴 프로토콜도 페이징된 메모리 풀과 페이징이 아닌 메모리 풀의 공간을 사용합니다. 드라이버도 메모리를 사용하므로 불필요한 메모리를 제거해야 합니다. 자세한 내용은 운영 체제 성능 최적화의 "불필요한 네트워크 프로토콜 제거" 섹션을 참조하세요.
BizTalk Server 환경의 컴퓨터에 추가 물리적 메모리를 설치합니다.
참고
32비트 시스템에서 BizTalk는 최대 2GB의 메모리를 사용할 수 있으며, /3GB 스위치를 사용하는 경우 2010년 BizTalk Server 3GB로 제한됩니다. 메모리 사용에 대한 자세한 내용은 Windows 릴리스에 대한 메모리 제한을 참조하세요.
네트워크 I/O 병목 상태
다음과 같은 경우 네트워크 I/O 병목 현상이 발생할 수 있습니다.
Network Interface\Bytes Total/sec 성능 카운터의 값이 사용 가능한 네트워크 대역폭의 80%를 초과합니다.
Server\Bytes Total/sec 성능 카운터의 값이 사용 가능한 네트워크 대역폭의 50%를 초과합니다.
네트워크 I/O 병목 상태를 측정하기 위한 성능 카운터
다음 성능 카운터를 사용하여 네트워크 I/O를 측정하고 시스템에 네트워크 I/O 관련 병목 현상이 발생하는지 확인해야 합니다.
Network Interface\Bytes Total/sec
임계값: 네트워크 용량의 80% 이상의 지속적인 가치.
Significance: 이 카운터는 각 네트워크 어댑터를 통해 바이트를 보내고 받는 속도를 나타냅니다. 이 카운터는 네트워크 어댑터가 포화되어 있는지 여부와 사용 가능한 네트워크 대역폭을 늘리기 위해 하나 이상의 네트워크 어댑터를 추가해야 하는지 여부를 확인하는 데 도움이 됩니다.
Network Interface\Bytes Received/sec
임계값: 특정 값이 없습니다.
Significance: 이 카운터는 각 네트워크 어댑터를 통해 바이트가 수신되는 속도를 나타냅니다. 이 카운터의 값을 사용하여 들어오는 데이터의 비율을 사용 가능한 총 대역폭의 백분율로 계산합니다. 이렇게 하면 BizTalk Server 데이터를 보내는 클라이언트에서 네트워크 대역폭을 늘려야 하는지 또는 BizTalk Server 컴퓨터 자체에서 네트워크 대역폭을 늘려야 하는지 여부를 결정하는 데 도움이 됩니다.
Network Interface\Bytes Sent/sec
임계값: 특정 값이 없습니다.
Significance: 이 카운터는 각 네트워크 어댑터를 통해 바이트가 전송되는 속도를 나타냅니다. 이 카운터의 값을 사용하여 나가는 데이터의 비율을 사용 가능한 총 대역폭의 백분율로 계산합니다. 이렇게 하면 클라이언트로 데이터를 보내는 BizTalk Server 네트워크 대역폭을 늘려야 하는지 또는 BizTalk Server 데이터를 수신하는 클라이언트 컴퓨터에서 네트워크 대역폭을 늘려야 하는지 여부를 결정하는 데 도움이 됩니다.
Server\Bytes Total/sec
임계값: 네트워크 용량의 50% 이상의 지속적인 가치.
Significance: 이 카운터는 네트워크를 통해 보내고 받은 바이트 수를 나타냅니다. 값이 높을수록 네트워크 I/O 병목 상태가 표시됩니다. 모든 서버에 대한 Bytes Total/sec 의 합계가 네트워크의 최대 전송 속도와 거의 같은 경우 성능을 향상시키기 위해 네트워크를 서브넷으로 지정하는 것이 좋습니다. 성능을 향상시키기 위해 네트워크를 서브넷하는 방법에 대한 자세한 내용은 BizTalk Server 데이터베이스 최적화의 서브넷 섹션을 참조하세요.
네트워크 I/O 병목 상태 해결
네트워크 I/O가 사용자 환경에서 병목 현상이라고 판단되면 다음 방법 중 하나 이상을 사용하여 병목 상태를 resolve.
네트워크 성능 최적화의 "네트워크 성능 향상을 위한 일반 지침" 섹션의 권장 사항을 따릅니다.
BizTalk Server 환경의 각 컴퓨터에서 네트워크 성능 최적화 항목에 설명된 Windows Powershell 네트워크 최적화 스크립트를 실행합니다.