//구글광고

앞서 포스팅한 502 bad gateway 링크( http://kimazfactory.tistory.com/8 ) 와 같이 이 현상도 다양한 근원 에러들때문에 일어난다.

본 포스팅도 해당 증상이 나올때 마다 해결책을 계속 업데이트 할 예정이다.



case 1. tomcat 과 nginx 를 이용한 reverse proxy 환경에서 Synology 에 설치한 Tomcat 서비스 요청시 웹페이지에서 504 gate way timeout 증상이 나타나는 경우


cause . Oracle DBCP 의 리소스 leak 에 의한 DBCP 불량

해결책. leak 소스 코드 부분 수정


원인 진단.



ssh를 이용하여 oracle 유저로 접속하여

sqlplus "/as sysdba" 를 입력하여 관리자로 접속한다.


접속한 후 다음의 쿼리로 현재 JDBC Thin Client 의 수를 세어본다.


select program, status, count(*) from v$session

where program like '%JDBC%'

group by program, status;




count(*) 컬럼의 값이 계속 증가하다가 일정 값에서 504 gateway timeout 값이 발생하며

페이지가 응답하지 않는다.


이 외에도 확인하는 방법은 다음과 같다.



select * from v$resource_limit; 


쿼리로 


현재 세션과 프로세스의 수 그리고 DB기동 이후 최대치 (High Water mark ) 그리고 파라미터상의 최대 제한치를

조회 할 수 있다.


파라미터를 수정하여 늘려준다.


하지만 leak 현상에 따라 제한이 걸리면 dbcp(connection pool ) 의 설정에 따라 한도에 도달하지 못하고 hang 걸리는 현상이 발생하기도 한다. 


해당증상을 임의로 재현해보면 다음과 같다.


해당 리소스를 close 하지 않고 다시 사용하면 이클립스 상에서 워닝은 뜨지만 무시하고 실행하면

리소스 leak 이 발생은 하지만 프로그램은 동작한다.



+ Recent posts