류짱:Beyond MySelf

No buffer space available / 큐 공간 또는 버퍼가 부족 현상 본문

Microsoft/Windows Platform

No buffer space available / 큐 공간 또는 버퍼가 부족 현상

リュちゃん 2011. 5. 3. 11:39

No buffer space available” 오류는 Port full 했을때도 발생 할 수 있는 오류 이고 Winsock buffer full 이 발생 해도 나올 수 있는 오류 입니다.
Port full 이 발생 되는지 확인 하기 위해서 netstat ano 로 사용하고 있는 포트를 확인할 수 있습니다.

Winsock buffer full 이 발생 되면 다음 오류가 발생 됩니다

1.     Winsock 을 이용한 application 에 아래와 같은 오류가 발생

ERR: Wed Nov 17 14:45:46 2010: ovcd (2676/5452): (bbc-99) Opening the server port or the lookup for the bind address failed: Bind address: 'localhost', port: '0', error message: (xpl-111) bind() to address '127.0.0.1:0' failed.
 (WIN-10055) 큐 공간 또는 버퍼가 부족하여 소켓에서 해당 작업을 진행하지 못했습니다..

ERR: Wed Nov 17 14:45:46 2010: ovcd (2676/5452): (ctrl-63) Error initializing RPC server: Can not initialize RpcServer. error=(xpl-111) bind() to address '127.0.0.1:0' failed.
 (WIN-10055) 큐 공간 또는 버퍼가 부족하여 소켓에서 해당 작업을 진행하지 못했습니다..

2. Localhost 에 대해 telnet 127.0.0.1 3389 연결 실패됨

3. Unix Server 로 ftp bind 실행 시 지원되는 버퍼 공간이 없습니다 오류 발생  

4. \\127.0.0.1 실행 시 시스템에 부탁된 장치가 동작하지 않습니다 오류 발생

Afd.sys 가 Non paged pool 을 이용해서 Windows Socket 을 관리 하게 되고 Maximum 사용 할 수 있는 Windows Socket Buffer는 시스템의 리소스 상황에 따라 달라질 수 있습니다.

모든 프로세스의 handle 값이 높다고 해서 문제가 되는 것이 아니라 handle 중 AFD handle (\device\AFD) 의 개수가 많고 leak 이 있는 경우 socket 을 이용한 네트워크 연결이 불가능 하게 됩니다.

명확한 원인 분석을 위해서는 아래와 같은 방법으로 자료를 수집 합니다.

  1. Port 고갈 확인
    문제 발생 시 명령 프롬프트에서 다음 명령어를 실행 해서 포트 고갈 문제인지 확인 합니다
    Netstat –ano >c:\netstat.txt
    Windows Server 2003 의 경우 가용 포트가 5000개 입니다. 이를 넘어서면 포트를 이용한 연결이 안 됩니다.
    연결 되어 있는 포트수를 확인 하려면 netstat –ano 결과를 보시면 됩니다.
    TCPView v3.03
    http://technet.microsoft.com/ko-kr/sysinternals/bb897437

  2. 프로세스의 handle 정보 확인
    문제 발생 시 작업 관리자-프로세스-handle 값이 높은 프로세스가 있는지 확인 합니다.
    프로세스 tab 을 선택 후 보기-열 선택-핸들에 체크 하게 되면 아래와 같이 핸들 정보 확인이 가능 합니다. 아래는 다른 사이트에서 winsock buffer full 발생 시 작업 관리자에서 handle 값이 높은 프로세스 확인한 스크린샷 입니다. 아래의 경우 winlog32.exe 를 중지하고 문제가 해결 되었으며 이 프로세스가 바이러스 임이 확인 되었었습니다.

  3. Handle.exe 를 이용한 handle 정보 확인
    문제가 재현되면 아래와 같이 실행하여 handle 정보를 수집 합니다.
    handle.exe -a > handles_problem.txt
    해당 프로그램은 아래 link에서 download 하여 압축을 해제 하세요.
    http://technet.microsoft.com/ko-kr/sysinternals/bb896655

감사합니다^^