한국어

Tip&Tech

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

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

처럼 입력하여 여유를 주면 되겠다.
List of Articles
번호 제목 글쓴이 날짜 조회 수
83 IPTV 디지털 방송 환경에서의 대화형 프로그램을 제작하기 위한 저작도구 소프트웨어개발 결과보고서 눈소리 2007-03-30 3035
82 IPTV MPEG transport stream 눈소리 2007-03-23 3059
81 Unix [security]퍼미션(permission)에 정복하기 눈소리 2007-03-23 3090
80 Unix cron 해부 눈소리 2007-03-23 3091
79 IPTV HDTV 뉴스 전문 블로그 눈소리 2007-03-22 2632
78 소스관리 unix 쉘 상에서 SVN 명령어 사용법 눈소리 2007-03-22 3114
77 Windows ClearType 폰트 튜닝 - 맑은고딕 눈소리 2007-03-22 2438
76 소스관리 eclipse에서 SVN 설정법(subclipse) 눈소리 2007-03-22 2460
75 소스관리 SVN 설치 및 기본 사용법 눈소리 2007-03-22 2513
74 IPTV Xlet 눈소리 2007-03-22 2458
73 IPTV 코덱의 정의와 종류(MPEG-1/2/4, Divx, Xvid, OGG, AC3, H.263, Video Codec) 눈소리 2007-03-22 2451
72 IPTV ATSC 눈소리 2007-03-22 2369
71 IPTV MPEG4와 h.264 요약 눈소리 2007-03-15 2897
70 JAVA class 파일 디컴파일 눈소리 2007-03-09 3197
69 JAVA ANT 기본 눈소리 2007-03-08 2515
» JAVA java.net.SocketException: Too many open files 에 대한 대처 눈소리 2007-01-16 2722
67 JAVA 뉴라인(newlines)에 대한 이해 눈소리 2007-01-16 2668
66 PHP 솔라리스 / PHP + Apache 설치(DSO) 제대로 하기. 눈소리 2006-12-05 3214
65 JAVA Java 성능개선을 위한 Programming 기법 눈소리 2006-12-05 3679
64 JAVA JVM GC(가비지컬렉션) 로그 확인 눈소리 2006-10-20 3779
63 Unix [terminal]텔넷에서 한글 입력이 안되는 경우 눈소리 2006-09-08 3293
62 utility base64 인코딩/디코딩 눈소리 2006-08-11 2952
61 Unix [file]현재 디렉토리의 대량의 파일을 각자의 파일명가운데에 특정문자 추가하여 바꾸기 눈소리 2006-08-11 3177
60 Unix [terminal]UNIX상에서 한글 출력이 깨져 나올 경우 눈소리 2006-08-11 3313
59 Unix [date]어제 날짜 구하기 눈소리 2006-08-11 3359
58 Unix [file]특정 파일의 화일명을 비슷하게 여러개 한꺼번에 바꾸기 눈소리 2006-08-11 2562
57 Unix [string]화일내의 포함된 특정문자열로 찾아서 내용만 출력하기 눈소리 2006-08-11 2620
56 Unix [string]개행을 제외한 화면내의 보이지 않는 문자 출력 눈소리 2006-08-11 2465
55 Unix [file]파일의 암호 눈소리 2006-08-11 2468
54 Unix [editor]vi - 모든문자를 대문자로 치환 눈소리 2006-08-11 2694
53 Unix [process]killall 명령 시뮬레이션 (프로세스명으로 죽이기) 눈소리 2006-08-11 3090
52 Unix [string]특정디렉토리의 모든 파일 안의 특정 문자열 치환 눈소리 2006-08-11 3102
51 Unix [directory]하위 디렉토리 한꺼번에 만들기 눈소리 2006-08-11 2509
50 Unix [network]텔넷 화면 수정 눈소리 2006-08-11 2477
49 Unix [user]사용자가 어디에서 무엇을 하는지 알아내기 눈소리 2006-08-11 2461
48 Unix [security]열려있는 파일을 보여주는 lsof 눈소리 2006-08-11 3315
47 Unix [network]텔넷 모든 접속자에게 메세지 보내기 눈소리 2006-08-11 2455
46 Unix [network]열려있는 포트 알아내기 눈소리 2006-08-11 2390
45 Unix [info]유닉스의 현재 버젼/종류/라이센스 정보 눈소리 2006-08-11 2449
44 Unix [exec]틀린명령어 틀린글자만 바꿔서 실행 눈소리 2006-08-11 2431