728x90

개요
 OCSP의 인증기관인 Signkorea의 장애 발생 후 OCSP의 오류 발생으로 인한 거래 처리 불가 상태

현상
 OCSP의 인증기관인 Signkorea의 장애 발생 (10분간)
 기관측 조치가 완료되었으나 OCSP의 오류 발생으로 인한 거래 처리 불가 상태

원인
 기관의 장애로 인해 때문에 queue에 서비스들이 기다리게 됨
 다음과 같은 OCSP데몬의 로그로 확인 가능
  "cannot resize thread pool. Resize of thread pool exceeds max pool size."
 기관측 조치가 완료되었으나 OCSP의 오류 발생
  데몬 구조상 먼저 들어온 서비스(timeout 된 유효하지 않은 서비스)를 처리해야 하려고 시도하였기 때문에 일정 시간 동안 유효한 서비스들에 대한 처리를 할 수 없었던 것으로 추정

해결방안
 데몬 재기동 후 정상 처리
  Queue에 쌓여 있는 유효 하지 않은 서비스들과 유효한 서비스 모두 버리고 새로 시작 하기 때문에 정상 동작

 Queue에 쌓이는 서비스의 시작 시간을 활용 하여 timeout 설정
  1. 서비스의 유효 시간을 설정(3초, 5초, 10초 등)
  2. Queue에 서비스를 쌓을 때 시작 시간 추가
  3. 서비스 처리전 시간을 체크하여 시작 시간과 비교
  4. 유효 시간에 맞을 경우 서비스 진행, 유효시간에 맞지 않을 경우 서비스 종료

 

728x90
728x90
개요
 Size가 큰 Session이 유입되면서, IO Exception이 발생 하였으며, Session서버로 부하를 주면서 Queue Full 발생 및 Lock획득 과정에서 Hang상태 후 장애유발

현상
 WAS의 컨테이너에서 Container getSession IO Exception 발생. 
 해당 Exception의 발생으로 컨테이너가 HANG상태로 변함.

원인
 jeus.net.msg.max 사이즈는 기본 5M 설정으로 이보다 더 큰 세션 생성시 getSession IO Exception 발생.
 Network OS level 에서의 Send Buffer가 정상적으로 read 되지 않았으며, 따라서 write queue가 점차적으로 증가 후, 10kb 되면서 Queue Block 발생함

해결방안
 system.jeus.session 로그를 활성화 시켜 로그 사이즈 측정 결과, 최대 8MB를 기록하였음.
 따라서 다음과 같이 설정 
  $JEUS_HOME/bin/jeus.properties의 JAVA_ARGS에 -Djeus.net.msg.max 사이즈 10MB 설정.
  ※티맥스연구소 권장에 따른, 사이트 세션객체 크기에 따라 조정하며, 10MB 이상은 비정상으로 Exception 처리가 적절함

 Send Buffer의 무한 Wait를 방지를 위해 다음과 같이 설정 (jext패치 작업이 같이 필요)
  $JEUS_HOME/bin/jeus.properties의 JAVA_ARGS에 -Djeus.net.nio.write.timeout 설정
  $JEUS_HOME/lib/jext 에 jext_v6008_i77157_a451003.jar 추가 필요.
728x90

+ Recent posts