java.net.SocketException: Too many open files 에 대한 대처

이전 보안회사에 재직할 때, 개발한 솔루션-서버-을 행정기관에 납품한 경우가 있었다.
이 행정기관은 내부 관리 서비스와 함께 대민 서비스가 주요한 서비스이기도 했다.
서비스를 오픈하고 시간이 흐르자 장애가 발생했었다.
세션을 유지하고 클릭하는, 서비스 요청하는 동시 접속자가 일시적을 증가하는 경우에 다음과 같은 에러가 발생하곤 했었다.

java.net.SocketException: Too many open files
         at java.net.PlainSocketImpl.socketAccept(Native Method)
         at java.net.PlainSocketImpl.socketAccept(Compiled Code)
         at java.net.PlainSocketImpl.accept(Compiled Code)
         at java.net.ServerSocket.implAccept(Compiled Code)
         at java.net.ServerSocket.accept(Compiled Code)
         at org.apache.tomcat.service.PoolTcpEndpoint.acceptSocket(Compiled Code)
         at org.apache.tomcat.service.TcpWorkerThread.run(Compiled Code)
         at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(Compiled Code)
         at java.lang.Thread.run(Compiled Code)

솔루션 자체의 내부 기능을 보아 파일 I/O 쪽 액세스에 무리가 없다고 판단하고 있어서인지 이래저래 고심을 했었는데, 이 액세스 가능여부에 socket 부분까지 포함된다는-로그에도 이미 있지만- 사실에 그 순간은 “이런! 경우가 다 있나~” 하고 무릎을 치면서, 보는 그대로를 믿지 않는 자신을 탓하기도 했었다.

솔루션이 생성된 특정 계정으로 프로세스가 구동될 경우, O/S 설정값에 영향을 받는다는 것도 그때 처음 접했던 것 같다.

당시, 솔루션이 설치된 O/S는, HP-UX 11.xxi 64bit itanium 시리즈였던 것으로 기억된다.(itanuim 64bit 프로세스에 기반한 시스템에서 장애를 지금도 많이 겪는다. ㅡ,.ㅡa)

[grim@www /]$ ulimit -a
core file size (blocks)  0
data seg size (kbytes)   unlimited
file size (blocks)       unlimited
max memory size (kbytes) unlimited
stack size (kbytes)      8192
cpu time (seconds)       unlimited
max user processes       2048
pipe size (512 bytes)    8
open files               1024
virtual memory (kbytes)  2105343

로그인 쉘에서 위와 같이 입력할 경우, 해당 결과를 보면 open files 항목이 보일텐데, 다중 접속자를 감안 시스템 솔루션을 개발하는데에는 이 부분의 기본값이 솔루션 기능의 lock 역할을 할 수도 있다.

이때는, 권한이 있는 사용자 쉘에서

[grim@www /]$ ulimit -n 2048

처럼 입력하여 여유를 주면 되겠다.

“java.net.SocketException: Too many open files 에 대한 대처”에 대한 4개의 생각

  1. itanuim 베이스 장비는 한번도 실제로 만져본 적이 없내요~
    MS에서 날아온 OS디스크 몇장만이 쌓여있을뿐이구요ㅋㅋ

    응답
    • 요즘 한창 새로 시스템을 구축하는 돈많은 업체들은 많이들 애용하는 것으로 보이더라구요. AIX보다는 가격 경쟁력이 있어서일까요? HP 64비트 시리즈의 수가 점점 커 가는 것 같이 생각됩니다.

      응답
  2. 초면에 죄송합니다.
    관공서쪽으로 사이트를 하나 만들어서 오픈했는데
    이틀만에 위와 비슷한 에러가 났는데
    도움이 좀필요합니다.
    자세한 사항은 메일이나 통화로 하고싶은데, 여기는 메일주소가 안나와있네요 TT
    도와주시면 정말 감사하겠습니다.
    prohappy@nate.com
    016-375-8452

    응답

댓글 남기기