메모리 바운드 문제 방지

 

마지막으로 수정된 항목: 2006-07-25

기본적으로 Exchange 서버는 최대 3GB의 실제 메모리를 사용할 수 있는 적극적인 메모리 사용자입니다. 프로덕션 서버에서는 일반적으로 1.5GB의 가상 메모리를 사용하는 Store.exe 프로세스를 볼 수 있습니다. 그 이유는 이 프로세스에서 대규모 메모리 캐시를 유지 관리하기 때문입니다.

Exchange 내의 여러 내부 프로세스에서 메모리를 사용할 뿐만 아니라 ExIFS 커널 드라이버에서도 커널 메모리를 사용합니다. 식별하기는 어렵지만 커널 메모리의 사용률이 높으면 성능이 심하게 저하되고 불안정해질 수 있습니다.

사용자 공간 메모리 정보

서버가 메모리를 사용할수록 사용 가능한 메모리가 부족하게 되므로 운영 체제에서 프로세스의 작업 집합을 지우고 보다 적극적으로 페이지 파일을 사용하기 시작합니다. 디스크 작업이 메모리 작업보다 시간이 더 걸리므로 페이지 파일의 사용은 전체 성능에 영향을 미칩니다.

또한 디스크 간 페이징이 높으면 디스크 병목 현상이 발생하고 성능이 저하됩니다. 이 경우 실제 문제는 메모리이며, 디스크 병목 현상은 하나의 증상일 뿐입니다.

아래 표에 나열된 카운터를 사용하여 사용자 공간 메모리의 현재 상태를 확인할 수 있습니다.

사용자 공간 메모리에 대한 성능 카운터

카운터 예상 값

Memory\Available Mbytes(MB)

프로세스나 시스템용으로 즉시 할당할 수 있는 실제 메모리의 양(MB)을 나타냅니다.

사용할 수 있는 메모리 양은 대기 중(캐시 상태), 사용 가능 및 0으로 채워진 페이지 목록에 할당된 메모리의 합과 같습니다.

  • 테스트 중에는 항상 50MB의 메모리를 사용할 수 있어야 합니다.

Memory\Pages/sec

하드 페이지 폴트를 해결하기 위해 페이지를 디스크에서 읽거나 디스크에 쓰는 속도를 나타냅니다.

이 카운터는 시스템 전체의 지연을 초래하는 폴트 유형의 기본 표시기입니다. 여기에는 파일 시스템 캐시에서 페이지 폴트를 해결하기 위해 검색된 페이지를 포함합니다. 일반적으로 응용 프로그램에서 이러한 페이지를 요청합니다.

  • 이 카운터는 항상 1,000개 미만이어야 합니다.

사용자 공간 메모리 향상

다음 목록은 사용자 공간 메모리의 성능을 향상시킬 수 있는 방법을 설명합니다.

  • 불필요한 소프트웨어를 제거합니다.
    Exchange에 사용할 수 있는 리소스를 늘리려면 원격 모니터링이나 꼭 필요하지 않은 서비스를 수행하는 타사 소프트웨어 도구를 서버에서 제거합니다. 성능 스냅인을 사용하면 각 응용 프로그램에서 사용하고 있는 메모리 양을 파악할 수 있습니다.
  • 유지 관리 작업은 사용량이 많지 않은 시간에 실행합니다.
    사용량이 많은 시간에 유지 관리 도구(예: Eseutil) 또는 작업(예: 사서함 관리)을 실행하면 Exchange에 필요할 수도 있는 메모리를 사용하게 됩니다. 이러한 도구와 작업은 사용량이 많지 않은 시간이나 사용량이 적은 시간(예: 주말)에 실행하는 것이 좋습니다.

커널 메모리 사용 정보

핵심 운영 체제나 커널에서 사용하는 여러 메모리 구조로 구성된 Windows 커널 메모리는 정상적인 상태의 Exchange 서버 배포를 위해 모니터링해야 하는 또 다른 영역입니다. 이 섹션에서는 Exchange 서버 성능 및 안정성에 영향을 주는 커널 메모리 구조에 대한 모니터링 및 문제 해결 방법을 설명합니다.

Exchange를 실행하는 서버에서 모니터링해야 하는 세 가지 주요 커널 메모리 구조는 다음과 같습니다.

  • 페이징 풀 페이징 풀은 디스크 페이징 파일에 페이징될 수 있는 공유 시스템 메모리의 일부입니다. 페이징 풀은 시스템 초기화 중에 만들어지며 커널 모드 구성 요소가 시스템 메모리를 할당하는 데 사용됩니다.
  • 비페이징 풀 비페이징 풀은 실제 메모리에 상주할 수 있는 시스템 가상 주소로 구성되며 페이징 입/출력(I/O) 없이 모든 주소 공간에서 액세스할 수 있습니다. 페이징 풀과 마찬가지로 비페이징 풀은 시스템 초기화 중에 만들어지며 커널 모드 구성 요소가 시스템 메모리를 할당하는 데 사용됩니다.
  • 시스템 PTE 페이징 파일 가상 메모리 주소는 페이지 테이블을 통해 실제 메모리 주소에 매핑됩니다. Microsoft Exchange Server 2003에서는 시스템 PTE(페이지 테이블 항목) 풀을 사용하여 I/O 공간, 커널 스택 및 메모리 설명자 목록 같은 시스템 페이지를 매핑합니다.

커널 메모리 공간 크기에 영향을 주는 Boot.ini 파일 설정

Exchange 서버에서 커널 메모리 공간의 최대 크기는 Microsoft Windows Server™ 2003 boot.ini 파일의 설정에 따라 영향을 받을 수 있습니다. 예를 들어 boot.ini 파일에서 /3GB 스위치를 사용하는 경우 사용자 모드 프로세스에 3GB의 가상 주소 공간이 할당되고 운영 체제에는 1GB의 가상 주소 공간만 할당됩니다.

/3GB 스위치 사용에 대한 자세한 내용은 다음 Microsoft 기술 자료 문서를 참조하십시오.

다음 표에서는 Exchange를 실행하는 서버에서 각 커널 메모리 공간의 대략적인 최대 크기가 boot.ini 설정에 따라 어떻게 다른지를 보여 줍니다. 이 예제에서는 Windows Server 2003을 실행하며 4GB의 RAM을 가진 다중 프로세서 서버에서 Exchange Server 2003이 실행됩니다.

Boot.ini 설정 및 최대 커널 메모리 공간 크기

커널 메모리 공간 기본 boot.ini 옵션을 사용할 경우의 최대 크기 /3GB 및 /USERVA = 3030 boot.ini 옵션을 사용할 경우의 최대 크기

페이징 풀

356MB

245MB

비페이징 풀

256MB

128MB

시스템 PTE

300,000개 페이지 테이블 항목 사용 가능

24,000개 페이지 테이블 항목 사용 가능

다음 표에서는 Windows Server 2003을 실행하며 4GB의 RAM을 가진 다중 프로세서 서버에서 실행되는 Exchange 서버에 대한 성능 모니터 경고 설정을 보여 줍니다. "경고" 수준에서는 서버가 안정적이더라도 메모리 할당의 누수 가능성을 조사해야 합니다. "위험" 수준에서는 특히 로드에 스파이크가 발생할 경우 서버가 불안정한 상태가 될 수 있습니다.

Boot.ini 파일 설정에 따른 성능 모니터 경고 설정

커널 메모리 공간 성능 모니터 카운터 기본 boot.ini를 사용하여 성능 모니터를 트리거할 경우 /3GB 및 /USERVA = 3030 boot.ini 옵션을 사용하여 성능 모니터를 트리거할 경우

페이징 풀

Memory\Pool Paged Bytes

  • Pool Paged Bytes 카운터가 300MB를 초과할 경우 "경고"
  • Pool Paged Bytes 카운터가 320MB를 초과할 경우 "위험"
  • Pool Paged Bytes 카운터가 200MB를 초과할 경우 "경고"
  • Pool Paged Bytes 카운터가 220MB를 초과할 경우 "위험"

비페이징 풀

Memory\Pool Nonpaged Bytes

  • Pool Nonpaged Bytes 카운터가 200MB를 초과할 경우 "경고"
  • Pool Nonpaged Bytes 카운터가 220MB를 초과할 경우 "위험"
  • Pool Nonpaged Bytes 카운터가 100MB를 초과할 경우 "경고"
  • Pool Nonpaged Bytes 카운터가 110MB를 초과할 경우 "위험"

시스템 PTE

Memory\Free System Page Table Entries *

  • Free System Page Table Entries가 8,000 미만일 경우 "경고"
  • Free System Page Table Entries가 5,000 미만일 경우 "위험"
  • Free System Page Table Entries가 8000 미만일 경우 "경고"
  • Free System Page Table Entries가 5,000 미만일 경우 "위험"

* 서비스 팩 1 없이 Windows Server 2003을 설치한 경우에는 "Memory\Free System Page Table Entries" 성능 모니터 카운터가 정확하지 않습니다. 이 카운터에 대한 자세한 내용은 Microsoft 기술 자료 문서 894067 "The Performance tool does not accurately show the available Free System Page Table entries in Windows Server 2003"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=894067)을 참조하십시오.

Exchange를 실행하는 서버에서 커널 메모리가 부족할 경우의 증상

Exchange를 실행하는 서버에서 커널 메모리가 부족할 경우의 증상은 응답 속도가 느려지는 현상부터 완전한 오류 상태까지 다양합니다.

Exchange를 실행하는 서버에서 커널 메모리가 부족할 경우의 증상

커널 메모리 공간 커널 메모리 부족 증상

페이징 풀

  • 사용자 인터페이스가 응답하지 않거나 응답 속도가 느림
  • 서버에서 메시지 또는 클라이언트 처리 오류 발생
  • 페이징 풀 할당 오류(이벤트 ID 2020: "풀이 비어 있기 때문에 서버가 시스템의 페이징 풀에서 할당하지 못했습니다."). 자세한 내용은 Microsoft 기술 자료 문서 312362 "서버가 시스템의 페이지된 풀에서 메모리를 할당할 수 없다." (https://go.microsoft.com/fwlink/?linkid=3052&kbid=312362)를 참조하십시오.

비페이징 풀

  • 사용자 인터페이스가 응답하지 않거나 응답 속도가 느림
  • 서버에서 메시지 또는 클라이언트 처리 오류 발생
  • 서버가 네트워크 요청에 응답하지 못함
  • 비페이징 풀 할당 오류(이벤트 ID 2019: "풀이 비어 있기 때문에 서버가 시스템의 페이징 풀에서 할당하지 못했습니다.")

시스템 PTE

  • 서버가 I/O 요청에 응답하지 못함
  • 서버가 네트워크 요청에 응답하지 못함
  • 서버에서 메시지 또는 클라이언트 처리 오류 발생

Exchange를 실행하는 서버에서 커널 메모리 문제 해결

앞에서 "Boot.ini 파일 설정에 따른 성능 모니터 경고 설정" 표에 표시된 성능 모니터 커널 메모리 카운터가 권장 값을 벗어나거나 "Exchange를 실행하는 서버에서 커널 메모리가 부족할 경우의 증상" 표에 설명된 증상이 나타날 경우 다음 문제 해결 방법을 사용하여 커널 메모리가 부족한 원인을 파악할 수 있습니다.

  1. Microsoft Exchange Server Best Practices Analyzer Tool을 실행하여 Exchange 서버가 제대로 구성되었는지 확인합니다.
    Exchange Server 커널 메모리 공간에 영향을 주는 구성 설정(예: 앞에서 설명한 /3GB 및 /Userva boot.ini 설정, SystemPages 레지스트리 키 등)은 여러 가지가 있습니다. 커널 메모리 부족 증상을 조사하기 전에 서버의 커널 메모리가 제대로 구성되었는지 확인하는 것이 중요합니다. Microsoft Exchange Best Practices Analyzer Tool을 실행하고 결과를 검토하여 서버 구성이 올바른지 확인합니다. 이 도구에 대한 자세한 내용은 Microsoft 다운로드 센터에서 "Exchange Server Best Practices Analyzer Tool"을 참조하십시오.
  2. 어느 커널 메모리 공간이 부족한지 확인합니다.
    • 이벤트 분석 이벤트 뷰어 로그를 분석하여 풀 및 비페이징 풀 할당 오류 이벤트(이벤트 ID 2019와 2020)를 확인합니다.
    • 성능 분석 성능 모니터를 사용하여 페이징 풀, 비페이징 풀 및 Free System PTE에 대한 로그(24시간 동안 60초 간격으로 샘플 작성)를 만듭니다. 성능 모니터 로그 결과를 앞의 "Boot.ini 파일 설정에 따른 성능 모니터 경고 설정" 표에 표시된 경고 및 위험 트리거와 비교합니다.
      앞에서 설명한 세 가지 표를 사용하여 이벤트 뷰어 및 성능 모니터 로그를 분석하면 부족한 커널 메모리 공간을 쉽게 확인할 수 있습니다.
  3. 커널 메모리 공간이 부족한 원인을 파악합니다.
    1. 메모리 부족 현상의 원인이 되는 풀 및/또는 비페이징 풀의 태그를 확인합니다.
      운영 체제는 태그를 사용하여 풀 및 비페이징 풀 커널 메모리 할당을 추적합니다. Windows Server 2003에서는 기본적으로 이 방식을 사용하며, Microsoft Windows 2000 Server에서는 Global Flags Editor 유틸리티(gflags.exe)를 사용하여 풀 태그 지정을 설정합니다. 메모리 문제 해결과 관련된 플래그에 대한 자세한 내용은 Microsoft 기술 자료 문서 177415 "메모리 풀 모니터(Poolmon.exe)를 사용하여 커널 모드 메모리 누수 문제를 해결하는 방법"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=177415) 및 기술 자료 문서 298102 "How to Find Pool Tags That Are Used By Third-Party Drivers"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=298102)를 참조하십시오.
      메모리 풀 모니터(poolmon.exe) 또는 MemSnap 메모리 프로필 도구(memsnap.exe, /p 스위치 사용)를 실행하여 태그를 파일에 덤프한 다음 가장 많은 풀 또는 비페이징 풀 메모리를 사용하는 태그를 확인합니다. 예약된 간격으로 MemSnap 메모리 프로필 도구를 실행하면 커널 메모리 누수를 격리하고 시간이 지남에 따라 할당이 어떻게 변경되는지 표시할 수 있습니다. MemSnap 메모리 프로필 도구에 대한 자세한 내용은 "Memsnap Overview"(https://go.microsoft.com/fwlink/?LinkId=50167)를 참조하십시오.

      예제 MemSnap 메모리 스냅숏

      Tag Type Allocs Frees Diff Bytes Per Alloc

      AGP Nonp

      1

      0

      1

      344

      344

      AGP Paged

      7

      5

      2

      384

      192

      AcdN Nonp

      2

      0

      2

      1,072

      536

      AcpA Nonp

      39

      36

      3

      192

      64

      AcpA Paged

      1

      0

      1

      504

      504

      AcpB Paged

      42

      38

      4

      576

      144

      AcpD Nonp

      315

      170

      45

      15,080

      335

      AcpF Nonp

      493

      485

      8

      320

      40

      위 표의 예제에서 "Bytes" 열을 사용하여 가장 많은 메모리를 사용하는 태그를 격리합니다. 이 예제에서는 AcpD Nonp가 여기에 해당합니다. "Allocs" 및 "Frees" 열을 사용하여 메모리 누수 가능성을 추적합니다. Allocs 및 Frees 값의 차이가 크면 메모리 누수 가능성을 나타낼 수 있습니다.

    2. 풀 또는 비페이징 풀 태그를 응용 프로그램이나 드라이버에 일치시킵니다. 다음 리소스를 사용하여 문제가 있는 태그를 호출하는 응용 프로그램 또는 드라이버에 일치시킬 수 있습니다.
      Microsoft debugging tools for Windows(https://go.microsoft.com/fwlink/?LinkId=50168)를 다운로드하여 설치하십시오. Microsoft 응용 프로그램 또는 드라이버 및 관련된 태그를 매핑하는 "pooltag.txt"가 %program files%\Debugging Tools for Windows\triage 디렉터리에 설치됩니다. 예를 들면 다음과 같습니다.
      Ntf? - ntfs.sys - NTFS 전용 할당 태그
      Ntf0 - ntfs.sys - 일반 풀 할당
      Ntf9 - ntfs.sys - 대형 임시 버퍼
      태그에 대한 자세한 내용은 Microsoft 기술 자료 문서 298102 "How to Find Pool tags That Are Used By Third-Party Drivers"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=298102)를 참조하십시오.
      태그 할당 누수에 대해 다음과 같이 해결 조치를 취합니다.
      앞에서 언급한 pooltag.txt 파일에서 나타난 바와 같이 누수 태그가 Microsoft에서 개발한 응용 프로그램이나 드라이버인 경우 Microsoft 기술 지원 서비스에 문의합니다.
      누수 태그가 타사에서 개발한 응용 프로그램이나 드라이버인 경우 타사 제조업체의 지원 서비스에 문의합니다.
      가능한 경우 누수가 해결될 때까지 문제가 있는 응용 프로그램 및/또는 드라이버를 제거하거나 사용하지 않도록 설정하여 시스템 안정을 유지합니다.

    3. 메모리 할당이 높지만 누수의 징후가 없는 태그에 대해 해결 조치를 취합니다.
      풀 또는 비페이징 풀 태그에서 많은 양의 커널 메모리(비페이징 풀의 경우 약 10MB/태그 및 페이징 풀의 경우 40MB/태그)를 사용하지만 태그 누수가 발생하지 않는 경우가 있습니다. 일반적으로 이러한 경우는 Exchange 사서함 서버의 사서함 개수를 4,000개 이상으로 확장하거나 메시지 수가 10,000개가 넘는 메시지 배달 큐를 처리할 때 발생합니다.
      다음은 태그 할당을 기준으로 메모리 사용량이 많은 경우입니다.
      TOKE 페이징 풀 태그 이 태그는 Windows가 서버에 열려 있는 모든 사용자 세션에 대한 보안 정보를 캐시하는 데 사용됩니다. 예를 들어 TOKE 페이징 풀 태그를 사용하여 할당된 메모리를 사용하는 토큰은 Microsoft Office Outlook과 같은 전자 메일 클라이언트에 의해 생성된 모든 사용자 세션에 대해 만들어집니다. 클라이언트에 따라 각 전자 메일 클라이언트에 여러 세션이 열릴 수 있으며, 이로 인해 각 클라이언트에 대해 여러 토큰이 서버에 캐시될 수 있습니다. 각 토큰의 페이징 풀 메모리 사용 공간은 일반적으로 사용자가 속한 보안 그룹 수를 기반으로 합니다. 사용자가 속한 보안 그룹이 많을수록 해당 사용자 세션과 연결된 토큰에서 많은 페이징 풀 메모리를 사용합니다.
      다음 표의 MemSnap 결과에서 평균 토큰 크기는 약 3KB입니다.

      예제 MemSnap 메모리 스냅숏

      Tag Type Allocs Frees Diff Bytes Per Alloc

      Toke Paged

      4,856,027

      4,855,591

      436

      12,093,848

      2,967

      TOKE 태그가 페이징 풀 메모리의 주 사용자인 경우 다음 단계에 따라 페이징 풀 메모리 부족 문제를 해결합니다.
      토큰당 페이징 풀 메모리 사용 공간(TOKE per Alloc)이 8KB를 넘는 경우
      • 조직의 보안 그룹 수를 줄입니다.
      • 보안 그룹을 통합하고 중첩이 심한 그룹을 제거합니다.
      토큰당 페이징 풀 메모리 사용 공간(TOKE Per Alloc)이 8KB 미만인 경우
      • 사서함 서버에서 페이징 풀 부족 현상이 발생하는 경우 서버의 사서함 수를 줄이거나 사서함 서버에서 공용 폴더 역할을 제거합니다.
      • 공용 폴더 서버에서 페이징 풀 부족 현상이 발생하는 경우 공용 폴더 서버를 기본 공용 저장소로 사용하는 사서함 저장소 수를 줄입니다. 이 작업을 수행하면 공용 폴더 서버의 클라이언트 수가 감소하고 이에 따라 사용자 세션 수도 감소합니다.
      • Outlook 일정 공유가 광범위하게 사용되는 경우 모든 클라이언트에서 Outlook 2003 이상을 실행하는지 확인합니다. 일정 공유는 추가 사용자 세션을 생성하여 서버에 추가적인 토큰 로드를 만듭니다. Outlook 2003에서는 이전 버전보다 적은 수의 세션으로 이 작업을 더욱 효율적으로 수행합니다.
      MMST 페이징 풀 태그 Windows 캐시 관리자는 이 태그를 사용하여 파일을 캐시합니다. Windows 캐시 관리자는 풀이 소모되면 자동으로 파일 캐시를 줄여 페이징 풀 메모리를 확보합니다. Exchange Best Practices Analyzer Tool에서 SMTP 구성에 대한 경고 또는 오류를 보고하지 않으면 해결 조치는 필요하지 않습니다. 기본이 아니거나 잘못된 SMTP 설정은 Windows 캐시 관리자에 추가 로드를 줄 수 있으며, 이로 인해 더 많은 페이징 풀 메모리가 사용될 수 있습니다.
      MMST 페이징 풀 태그와 관련한 페이징 풀 부족 증상 및/또는 이벤트가 발생하는 경우 Microsoft 기술 지원 서비스에 문의하십시오.
      AUXL 및 FLST 비페이징 풀 태그 이 태그는 exifs.sys에서 사용합니다. exifs.sys는 Exchange 저장소 드라이버가 메시징 데이터베이스에 들어오고 나가는 항목을 읽고 쓰는 데 사용하는 커널 모드 드라이버입니다.
      이 태그 중 하나가 비페이징 풀 메모리의 주 사용자인 경우 Microsoft 기술 지원 서비스에 문의하십시오.
      IpSA 비페이징 풀 태그 기본 IPSec(IP 보안) 장치 드라이버인 IPSec.sys에서 이 Windows 태그를 사용하여 페이징 풀 메모리에 저장된 보안 연결에 액세스합니다. Exchange 서버에서 IPSec.sys를 사용하면 비페이징 풀 오버헤드가 추가됩니다. 비페이징 풀이 부족할 때 이 태그가 비페이징 풀 메모리의 주 사용자인 경우 다음과 같은 해결 조치를 취합니다.
      사서함 서버에서 페이징 풀 부족 현상이 발생하는 경우 서버의 사서함 수를 줄이거나 사서함 서버에서 공용 폴더 역할을 제거합니다.
      공용 폴더 서버에서 페이징 풀 부족 현상이 발생하는 경우 공용 폴더 서버를 기본 공용 저장소로 설정한 사서함 저장소 수를 줄입니다. 이 작업을 수행하면 공용 폴더 서버의 클라이언트 수가 감소하고 이에 따라 사용자 세션 수도 감소합니다.

    4. PTE 부족 원인을 격리합니다. 이는 페이징 또는 비페이징 풀 부족의 원인을 격리하는 것만큼 간단하지 않습니다. MemSnap 같이 PTE 사용을 추적할 수 있는 도구가 없습니다. 일반적인 해결 조치를 통해서만 PTE 부족 시나리오를 해결할 수 있습니다.
      PTE 누수 누수로 인한 PTE 부족은 성능 모니터(앞에서 설명한 Free System PTE와 관련된 카운터 사용)를 사용하여 격리할 수 있습니다. PTE 누수는 며칠 동안 지속되는 성능 모니터 Memory\Free System PTE 부족을 통해 알 수 있습니다. PTE 누수 상태 진단에 대한 지원은 Microsoft 기술 지원 서비스에 문의하십시오.
      PTE 부족(누수 징후가 없는 경우) PTE 누수가 발생하지 않는 경우에도 PTE 부족 현상이 발생할 수 있습니다. 일반적으로 Exchange 사서함 서버의 사서함 수를 4,000개 이상으로 확장하거나 타사 드라이버에서 PTE를 사용하는 경우가 여기에 해당됩니다. PTE 부족 문제를 해결하려면 다음과 같은 조치를 취합니다.
      •   불필요한 타사 드라이버를 제거합니다.
      •   /BASEVIDEO 또는 일반 비디오 드라이버를 사용하여 시스템 페이지 테이블 항목을 늘립니다. 비디오 보드는 시스템 페이지 테이블 항목을 사용하여 커널 공간에서 해당 버퍼를 매핑합니다. 이러한 시스템 페이지 테이블 항목의 사용은 Microsoft Exchange에서도 필요로 합니다.
      •   boot.ini에서 /USERVA 설정을 줄여 사용 가능한 PTE를 더 많이 추가합니다. 이 작업을 수행하려면 Microsoft 기술 자료 문서 823440 "Windows Server 2003 기반 시스템에 Exchange Server 2003을 설치한 경우 /3GB 스위치를 사용해야 한다"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=823440)에 설명된 지침을 따릅니다.
      • 사서함 서버에서 PTE 부족 현상이 발생하는 경우 서버의 사서함 수를 줄이거나 사서함 서버에서 공용 폴더 역할을 제거합니다.
      •   공용 폴더 서버에서 PTE 부족 현상이 발생하는 경우 공용 폴더 서버를 기본 공용 저장소로 설정한 사서함 저장소 수를 줄입니다. 이 작업을 수행하면 공용 폴더 서버의 클라이언트 수가 감소하고 이에 따라 사용자 세션 수도 감소합니다.

Exchange 저장소 가상 메모리 정보

서버의 각 Store.exe 프로세스에는 처리할 수 있는 제한된 양의 메모리가 있으며, 이 메모리를 저장소 가상 메모리라고 합니다. 더 많은 사용자 및 사용량을 수용하도록 서버를 확장하면 가상 메모리에서 실행되는 서버의 속도가 느려질 수 있습니다. 서버에 4GB의 RAM이 이미 있는 경우에는 서버의 메모리를 더 이상 확장할 수 없습니다. 실제 메모리를 추가하는 것으로는 가상 메모리가 부족함을 알리는 오류를 해결할 수 없습니다.

서버의 가상 메모리가 부족한 경우 Store.exe 프로세스에서 페이지 파일을 사용하고 Store.exe 프로세스가 신속하게 페이징을 시작하므로 서버의 전체 성능이 저하됩니다.

다음 표에 나열된 성능 카운터를 사용하여 저장소 가상 메모리의 현재 상태를 파악할 수 있습니다.

Exchange 저장소 가상 메모리에 대한 성능 카운터

카운터 예상 값

MSExchangeIS\VM Largest Block Size

사용 가능한 가장 큰 가상 메모리 블록의 크기를 바이트 단위로 표시합니다.

이 카운터는 가상 메모리가 사용되는 동안 아래쪽으로 경사지는 선입니다. 이 카운터가 32MB 미만으로 떨어지면 이벤트 로그에 경고(이벤트 ID=9582)가 기록되고 16MB 미만으로 떨어지면 오류가 기록됩니다.

  • 이 값은 항상 32MB 이상을 유지해야 합니다.

MSExchangeIS\VM Total 16 MB Free Blocks

16MB 이상의 사용 가능한 총 가상 메모리 블록 수를 표시합니다.

이 카운터는 처음에는 올라가다가 나중에 사용 가능한 메모리가 더 조각화되면 내려가는 선으로 표시됩니다. 처음에는 몇 개의 큰 가상 메모리 블록을 표시하다가 시간이 지날수록 더 많은 수의 분리된 작은 블록을 표시합니다. 이러한 블록이 16MB 미만으로 줄어들면 카운터의 선이 내려가기 시작합니다.

  • 이 값은 항상 1 이상을 유지해야 합니다.

MSExchangeIS\VM Total Free Blocks

크기에 상관없이 사용 가능한 총 가상 메모리 블록 수를 나타냅니다.

이 카운터는 처음에는 올라가다가 나중에 사용 가능한 메모리가 작은 블록으로 조각화되기 시작하고 이러한 블록이 사용되면 내려가는 선으로 표시됩니다.

이 카운터를 사용하여 사용 가능한 가상 메모리의 조각화 정도를 측정합니다. 블록 평균 크기는 Process\Virtual Bytes\STORE 인스턴스를 MSExchangeIS\VM Total Free Blocks로 나눈 값입니다.

  • 이 값은 항상 1 이상을 유지해야 합니다.

MSExchangeIS\VM Total Large Free Block Bytes

16MB 이상의 사용 가능한 모든 가상 메모리 블록의 합계를 바이트 단위로 나타냅니다.

이 카운터는 저장소 메모리 조각화를 모니터링하며 메모리가 사용되는 동안 아래쪽으로 경사지는 선을 구성합니다. 정상적인 상태의 서버에서 이 선은 50MB 이상을 유지해야 합니다.

  • 이 값은 항상 50MB 이상을 유지해야 합니다.

또한 Store.exe 프로세스는 exchmem이라고 하는 고유의 힙 할당 메커니즘 및 구조를 사용합니다. Store.exe 프로세스는 시작 시 여러 exchmem 힙을 만들고 이 힙이 모두 사용되거나 할당을 완료할 인접 메모리를 찾을 수 없을 정도로 조각화된 경우에만 힙 수를 늘립니다.

메모리 사용률 문제 또는 내부 조각화(exchmem 힙이 자체적으로 저장소의 가상 메모리 공간 내에 상주하는 exchmem 힙 내부의 조각화)가 발생할 경우 Store.exe 프로세스는 새 exchmem 힙을 만듭니다.

일반적으로 Store.exe 프로세스에서 반복적으로 추가 힙을 만들어야 하는 경우 전체 저장소 가상 메모리가 조각화되거나 소모됩니다. 다음 표에 나열된 카운터를 추적하면 힙이 조각화될 때 exchmem 힙이 문제나 성능 저하의 원인인지 여부를 확인할 수 있습니다.

exchmem 힙에 대한 성능 카운터

카운터 예상 값

MSExchangeIS\Exchmem: 메모리 오류가 있는 힙 수

사용 가능한 메모리가 부족하여 할당하지 못한 전체 exchmem 힙 수를 나타냅니다.

  • 이 값은 항상 0이어야 합니다.

MSExchangeIS\Exchmem: 메모리 오류 수

사용 가능한 메모리로 충족될 수 없는 전체 exchmem 할당 수를 나타냅니다.

  • 이 값은 항상 0이어야 합니다.

MSExchangeIS\Exchmem: 추가 힙 수

시작 후 저장소에서 만든 exchmem 힙 수를 나타냅니다.

  • 이 값은 항상 3 이하여야 합니다.

Exchange 저장소 가상 메모리 향상

다음 목록은 Exchange 저장소 가상 메모리의 성능을 향상시킬 수 있는 방법을 설명합니다.

  • 저장소 그룹 통합
    각 저장소 그룹에 대해 Store.exe 프로세스는 구조를 할당하고 메모리를 사용해야 합니다. 가능한 경우 SLA를 만족하는 최소 저장소 그룹 수를 사용합니다. 이것은 Exchange 2003보다 Exchange 2000에서 더욱 중요합니다. Exchange 2003에서는 추가 저장소 그룹당 가상 메모리 사용 공간 증가량을 줄이기 위한 중요 변경이 있었습니다. 그 결과 Exchange Server 2003에서는 저장소 그룹 또는 데이터베이스 구성이 가상 메모리 조각화 시나리오의 근본 원인일 가능성이 크게 줄었습니다. Exchange Server 2003에서의 저장소 그룹 구성에 대한 자세한 내용은 Microsoft 기술 자료 문서 890699 "How to configure storage groups in Exchange Server 2003"(https://go.microsoft.com/fwlink/?linkid=3052&kbid=890699)을 참조하십시오.
  • 서버 역할 오프로드
    서버가 여러 역할(예: 공용 폴더 및 사서함 서버)을 수행함으로 인해 메모리 사용률이 증가하는 경우에는 전용 서버의 역할을 오프로드하는 것이 좋습니다.
  • Microsoft 기술 자료 문서 815372 참조
    가상 메모리 사용을 최적화하는 방법에 대한 자세한 내용은 Microsoft 기술 자료 문서 815372, "Exchange Server 2003에서 메모리 사용을 최적화하는 방법"(https://go.microsoft.com/fwlink/?LinkId=3052&kbid=815372)을 참조하십시오.