운영체제
Windows TIME_WAIT으로 인한 신규 소켓 오픈 실패
warpmemory
2018. 2. 1. 18:06
New-Object System.Net.Sockets.TcpClient("1.1.1.1", 21)
파워쉘에서 FTP 포트 오픈 시에
1 | New-Object : Exception calling ".ctor" with "2" argument(s): "An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full | cs |
에러가 발생하였습니다.
1 | netstat -an | cs |
netstat로 확인해보니, 무지하게 많은 포트가 TIME_WAIT 상태로 오픈되어있었고, 그로 인해서 더이상 포트를 열수 없는 상태였습니다.
왜 이런 일이 발생했는지 조사해보니
윈도우즈 버그로 인해서, 시스템 부팅후 479일 후 부터는 TIME_WAIT 상태의 TCP/IP 포트가 닫히지 않는 현상이 발생한다고 한다.
내부적으로 업타임 카운터가 있는데, 해당 카운터 오버플로우가 발생하는 시점이 479.1일 정도가 된다고 하네요.
해당 버그는 479일이 되기전에 주기적으로 재부팅을 하거나, hotfix 설치를 통해서 해결 할 수 있다고 합니다.