요즘에 시간이 나는 대로 나름 "Windows Internals" 를 열심히 읽고 있습니다.
음음... 그건 그렇고... 자 이벤트 메세지에 풀이 비었다 뭐 이런 메세지가 뜨면서, 보안 탭이 사라지는가 하면 시스템이 굼뜨게 움직입니다... 거의 행 상태...ㅡㅡ;; 이벤트 로그는 아래와 같죠... 보통 File 숫자가 많고 ( 보통 소스를 저장하는 파일 서버 ) 사용량이 많은 경우 발생합니다. 물론 leak 일 가능성도 농후 합니다. (보통 바이러스 백신이나 DRM 툴들이 일으키는 경우가 많습니다.) 어차피 원론적인 해결을 위해서 성능 로그를 수집해서 handle table 과 pool memory를 보면 됩니다만... 전 leak일 가능성을 배제 하고 말씀 드리겠습니다. ------------------------------------------------------------------------------------ File의 object handle은 Kernel 영역 메모리 중 Nonpaged Pool에 저장됩니다. (내일 중에 올리는 Process 까보기를 참조하시면 됩니다.) 본디 운영체제 (ntoskernel.exe) 도 역시 하나의 Process 입니다. 즉 이말은 자신의 object handle table을 지닌다는 말과 같습니다. 즉 이 file 이라는 object의 handle을 저장할려는데 공간을 모두 사용하게 된거죠. ------------------------------------------------------------------------------------ 그런데 보통 PoolMemory는 32Bit 머신의 경우 부팅시 스스로 결정합니다. 일반 적인 경우 다음과 같이 PoolMemory 사이즈가 결정 됩니다. Windows 2003 SP1의 RAM 크기에 따른 Pool Size RAM NonPaged Max Paged Max 0512 MB 125 MB 184 MB 1024 MB 202 MB 168 MB 1536 MB 254 MB 352 MB 2048 MB 252 MB 352 MB 즉 실제 메모리 크기에 맞춰 자동으로 결정하게 됩니다. 즉 어쩔 수 없이 32Bit 운영체제에서는 Pool의 한계를 가질 수 밖에 없습니다. 결론적으로 위와 같이 Pool이 부족하지 않게 하려면 서버의 File 갯수를 정기적으로 점검하여, 미연에 예방 하거나 x64 (64Bit) 운영체제로 업그래이드 하여 Pool Size를 늘리는 수밖에 없습니다. 버전에 따른 Pool Memory 한계 Region IA-64 x64 x86 Process Address Space 7152 GB 8192 GB 2 to 3 GB* Paged Pool 128 GB 128 GB 470 to 650 MB NonPaged Pool 128 GB 128 GB 256 MB |