기술지원 문의

Resin Error 관련
김종규 / 2011-11-26 14:16

안녕하세요!

Resin 관련하여 아래와 같은 Error 발생 되었는데 홈페이지 정상적으로 열리지 않구요..

어떤 부분을 체크 해 봐야 할까요..

LOG 확인 결과 Too many open files  Error 발생 후에 아래의 Error 발생 되었는데요..

예정에도 이런 동일한 Error 발생하여 soft , hard nofile의 설정값을 4192에서

8192로 변경 하였으나 동일하게 발생이 되면서 아래와 같은 Error 발생 되었습니다.

Resin WAS는 처음 이라 그럼 확인 좀 부탁 드립니다.

 

감사 합니다. ~

 

1. edure (서비스 계정)

edure soft nofile 8192

edure hard nofile 8192

2. ulimit 값

 

 

 ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 102399
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 8192
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 102399
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

 

1차 발생 로그 (1차 Log 발생 후 아래의 2차 로그 발생)

 

[201144%D 20:44:36.211] SQLServerResultSet:10594736 created by (SQLServerStatement:12383772)

[201144%D 20:44:36.211]  SQLServerResultSetMetaData:9715023 created by (SQLServerResultSet:10594736)

[201144%D 20:44:36.233] java.io.FileNotFoundException: /???/resin/webapps/edu/html/images/common/gnb_helpdesk.gif (Too many open files)

[201144%D 20:44:36.233]         at java.io.FileInputStream.open(Native Method)

 

 

2차 발생 로그

 

[201100%D 00:00:39.073] WebApp[http://localhost:8880/??] stopping
[201100%D 00:00:39.074] WebApp[http://localhost:8880/??] stopping
[201100%D 00:00:39.079] java.lang.IllegalStateException: All store ids used.
[201100%D 00:00:39.079] java.sql.SQLException: cant load table srun_ in /EUWEB/resin/webapps/lms/WEB-INF/sessions/srun_.db.
[201100%D 00:00:39.079] java.lang.IllegalStateException: All store ids used.
[201100%D 00:00:39.079] resin/conf/resin.conf:203: java.lang.IllegalStateException: All store ids used.
[201100%D 00:00:39.079]
[201100%D 00:00:39.079] 201:    <session-timeout>90</session-timeout>
[201100%D 00:00:39.079] 202:    <enable-url-rewriting>true</enable-url-rewriting>
[201100%D 00:00:39.079] 203:    <file-store>WEB-INF/sessions</file-store>
[201100%D 00:00:39.079] 204:       </session-config>
[201100%D 00:00:39.079] 205:

[답변]Resin Error 관련
관리자 / 2011-11-28 10:03

안녕하세요. 기술지원팀 입니다.

 

질문하신 Error 내용은 File Descriptor 값이 부족하여 발생한 오류 입니다.

 

그래서 조치하신 부분이 FD값을 8192 값 까지 변경하신걸로 보이네요.

 

하지만 단순히 사용자 증가나 부하로 인한 FD값 부족이라면 값을 증가시키는것으로

 

임시 조치가 가능하지만, Application 상 소켓이나 파일의 close() 를 제대로 명시 하지

 

않으셨다거나, 불필요한 파일이나 소켓을 중복하여 open 하셧다면 값 조정이

 

무의미 해져 해당 문제가 재발생 할 수 있습니다.

 

일단 실제 운영되고 있는 프로세스의 FD값이 왜 부족한지 체크가 필요할 것 같습니다.

 

리눅스를 기준으로 서비스 되고 있는 프로세스 ID를 가지고 현재 열려 있는

 

소켓이나 파일들 즉 FD 상태를 확인 하실수 있습니다.

 

일단 ps -ef  | grep resin  명령어로 실제 서비스 되고 있는

 

자식프로세스의 ID값을 구하신후

 

/proc/프로세스ID값 경로로 이동하여

 

ls -al fd 라는 명령어로 해당 프로세스의 FD 상태를 확인하실수 있습니다.

 

솔라리스 같은 경우 pfiles 명령어로 확인이 가능합니다.

 

해당 FD 상태를 파악하여 소켓이나 파일중 제대로 close()가 안되는 부분이

 

있는지 또는 똑같은 파일을 중복하여 여러개 오픈 하진 않는지 확인해 보시기 바랍니다

 

감사합니다.