2007~2011/IIS2009. 12. 22. 13:13

InetInfo.exe 프로세스가 CPU 100% 를 유지하며 시스템 Hang 을 유발하고 있습니다. 문제가 발생하면 InetInfo.exe 프로세스도 강제 종료되지 않는 상황입니다. 한 서버에 50개가 넘는 웹/FTP 사이트가 운영 중에 있어 문제의 요인을 찾아내기란 쉽지가 않았습니다. 무엇이 문제일까요?


[환경]
Windows 2000 Server SP4 / IIS 5


[현상]
현상1 : InetInfo.exe 프로세스의 CPU 사용률이 25% - 50% - 75% - 100% 순으로 증가합니다.
현상2 : InetInfo.exe 프로세스의 CPU 사용률이 0~100% 까지 급증합니다 (증가하는 데 소요되는 시간은 약 2분 내외)

위의 문제가 재현된 이후에는 IIS 서비스 재시작 또는 프로세스 강제 종료가 적용되지 않습니다.(액세스 거부)
임시 조치하기 위해 재부팅이 필요한 상황입니다.


[원인]
IIS 5 홈 디렉터리를 다른 컴퓨터에 있는 공유 디렉터리(a share located on another computer)로 사용할 경우 4,294,967,296 bytes(4GB) 보다 큰 파일을 전송할 때 이러한 현상이 나타날 수 있습니다. 실제 20GB 이상의 대용량 파일을 FTP를 통해 다운로드(get) 때 나타난 현상입니다.


[WORKAROUND]
IIS 5에서는 '다른 컴퓨터에 있는 공유 디렉터리'(NAS도 이에 포함) 를 홈 디렉터리로 사용할 경우 4,294,967,296bytes(4GB) 보다 큰 파일을 전송하지 않아야 합니다. IIS 6 에서는 이러한 현상이 나타나지 않습니다. 어쩔 수 없지요 ^^;


[분석결과]
1. 성능 모니터 - CPU 사용 추이




2. FTP 웹 사이트의 홈 디렉터리를 NAS 영역으로 설정하여 사용하고 있음 (다른 컴퓨터에 있는 공유 디렉터리)



3. IIS Web Log 
get/put 기록을 확인하여 해당 파일 size 확인


4. RUNNING Thread 

!THREAD 8510e520  Cid 55c.cf0  Teb: 7ff88000  Win32Thread: 00000000 RUNNING
IRP List:
    84c00e28: (0006,0100) Flags: 00000000  Mdl: 00000000
Not impersonating
Owning Process 857feca0
Wait Start TickCount    32885764      Elapsed Ticks: 0
Context Switch Count    1625279              
UserTime                  0:00:43.0593
KernelTime                0:16:20.0953
Start Address KERNEL32!BaseThreadStartThunk (0x77e5b740)
Win32 Start Address ISATQ!AtqPoolThread (0x6d529470)
Stack Init bd9a7000 Current bd9a6640 Base bd9a7000 Limit bd9a4000 Call 0
Priority 8 BasePriority 8 PriorityDecrement 0 DecrementCount 16

ChildEBP RetAddr  Args to Child
bd9a66e8 bfabfb11 84781008 85a58950 00000000 rdbss!RxInitializeContext+0x8a
bd9a6708 bfabcaca 84781008 85a58950 00000000 rdbss!RxCreateRxContext+0x53
bd9a67e0 bface3c9 bfac4570 8510e503 8478109c rdbss!RxFsdCommonDispatch+0x2b7
bd9a6810 bfa6c646 85a58950 84781008 85a58950 rdbss!RxFsdDispatch+0x93
bd9a6830 8041eecb 85a58950 84781001 854e0920 mrxsmb!MRxSmbFsdDispatch+0x118
bd9a6844 be8bbfd1 84ec1e88 00000000 854e09d8 nt!IopfCallDriver+0x35
bd9a6860 be8b7e51 854e0920 84781008 00000000 AhnFlt2K+0x4fd1
bd9a6878 8041eecb 854e0920 84781008 854da7a8 AhnFlt2K+0xe51
bd9a688c bf0cd0ae 84f48848 8510e520 800655c0 nt!IopfCallDriver+0x35
bd9a68a8 bf0d4061 84f48701 8043105b 84f48848 afd!AfdDoNonCachedTransmitIo+0x18e
bd9a68b0 8043105b 84f48848 bd9a68ec bd9a68e0 afd!AfdTransmitApcKernelRoutine+0x13
bd9a68f0 8006543c 00000000 00000000 bd9a6908 nt!KiDeliverApc+0xeb
bd9a68f0 8006511c 00000000 00000000 bd9a6908 hal!HalpApcInterrupt+0xb0
bd9a6978 bfabccc6 84ec1e88 85a58950 8042ec00 hal!HalRequestSoftwareInterrupt+0x3c
bd9a6a44 bface3c9 bfac4570 8510e503 8478109c rdbss!RxFsdCommonDispatch+0x4b3
bd9a6a74 bfa6c646 85a58950 84781008 85a58950 rdbss!RxFsdDispatch+0x93
bd9a6a94 8041eecb 85a58950 84781001 854e0920 mrxsmb!MRxSmbFsdDispatch+0x118
bd9a6aa8 be8bc12a 84ec1e88 00000000 854e09d8 nt!IopfCallDriver+0x35
bd9a6ac4 be8b7e51 854e0920 84781008 00000000 AhnFlt2K+0x512a
bd9a6adc 8041eecb 854e0920 84781008 851bb308 AhnFlt2K+0xe51
bd9a6af0 bf0cd0ae 84c00e28 84c00e60 84f487e8 nt!IopfCallDriver+0x35
bd9a6b0c bf0bec8b 84f48700 0000007c 84c00e28 afd!AfdDoNonCachedTransmitIo+0x18e
bd9a6bec bf0c412d 84c00e28 84c00f04 8599c350 afd!AfdTransmitFile+0x571
bd9a6c00 8041eecb 8599c350 84c00e28 84c00e28 afd!AfdDispatchDeviceControl+0xdd
bd9a6c14 804b32d0 84c00f04 00000000 84c00e28 nt!IopfCallDriver+0x35
bd9a6c28 804b4124 8599c350 84c00e28 85108108 nt!IopSynchronousServiceTail+0x60
bd9a6d00 804abd50 00003268 00000000 00000000 nt!IopXxxControlFile+0x5d6
bd9a6d34 80468389 00003268 00000000 00000000 nt!NtDeviceIoControlFile+0x28
bd9a6d34 77f88403 00003268 00000000 00000000 nt!KiSystemService+0xc9
028bfa40 74f4c3af 00003268 00000000 00000000 ntdll!ZwDeviceIoControlFile+0xb
028bfad0 6d521bee 00003268 000032f0 00000000 msafd!TransmitFile+0xb8
028bfb00 6fb2649a 01be0900 000032f0 00000000 ISATQ!AtqTransmitFile+0x9c
028bfb44 6fb2eaf1 013e1190 028bfbb0 00000000 ftpsvc2!ASYNC_IO_CONNECTION::TransmitFileTs+0x14e
028bfbbc 6fb28395 028bfc75 028bfc2c 01df3188 ftpsvc2!USER_DATA::SendFileToUser+0xe3
028bfc30 6fb321b8 01df3008 028bfc75 028bfc82 ftpsvc2!MainRETR+0xbb
028bfc54 6fb2d529 01df3008 028bfc70 01df3160 ftpsvc2!ParseCommand+0x240
028bfe8c 6fb2cf7c 00000012 00000000 01df3008 ftpsvc2!USER_DATA::ParseAndProcessRequest+0x27a
028bfea8 6fb2ecc3 00000012 00000000 01df3160 ftpsvc2!USER_DATA::ProcessAsyncIoCompletion+0x2b2
028bff28 6fb26658 01df3008 00000012 00000000 ftpsvc2!ProcessUserAsyncIoCompletion+0x64
028bff4c 6d521a22 01df3160 00000012 00000000 ftpsvc2!ProcessAtqCompletion+0x81



[참고자료]
FTP get command cannot transfer a large file, and 100 percent CPU usage occurs on a Windows 2000-based FTP server
http://support.microsoft.com/default.aspx?scid=kb;EN-US;888515


작성자 : Lai Go / 작성일자 : 2009.12.21

Posted by 사용자 Lai Go

댓글을 달아 주세요

  1. moon

    explorer5 안쓴지가 옛날이라.. 근데 웹서비스만 50개라.. 대단하군요
    마지막 러닝스레드는 봐도 모르겠네요. ㅎㅎ
    스레드에 대한 개념이 잘안잡힙니다. 이녀석이
    하는역활은 뭔가요?

    2009.12.23 15:19 [ ADDR : EDIT/ DEL : REPLY ]