//구글광고


Synology NAS에서 서비스 운용시 nginx 502 Bad Gateway 에러 발생시 대처 방안



주의 : 본 문제의 원인은 다양하기 때문에 적절한 대처를 해야합니다.

이 포스트 역시 해당 케이스에 따라 계속 원인과 증상 해결방안을 업데이트 하는 식으로 게시할 예정입니다.


CASE 1. 로그인 페이지 (DB 연결을 하지 않는 페이지)는 정상적으로 뜨고 DB연결 페이지에서 해당 오류 발생 케이스


증상 : 홈페이지 서비스 운용시 로그인 페이지는 정상적으로 뜨지만, 아이디 패스워드를 입력한 후, 로그인 버튼을 누르면

 nginx(엔진x) 502 Bad Gateway 오류 발생


원인 : DB Connection Pool 설정의 문제 및 보안 부분 점검


처음 페이지는 정상적으로 작동하나, DB를 처리하는 페이지의 작동불능 상태의 경우, Bad Gateway 자체의 문제의 증상이 

timeout 이상의 시간을 초과 하거나 크기를 넘어설 경우, 응답이 없을 경우 다양한 증상을 보인다.


문제진단 방법


1. Tomcat 의 catalina log 확인

 ( 혹시 Exception 이 발생하지 않는지 )


2.  DBMS의 연결 부분 확인

 ( DBCP 사용할 경우 현재 세션에 커넥션 이 정상적으로 alive 하고 있는지 확인한다 . )


3. Query performance 확인

 (  해당 쿼리 수행시 수행시간이 timeout 이상으로 지연되는지 lock 등의 경합이 발생하고 있지 않은지 확인 )


4. Synology 보안 부분 확인

 방화벽 등의 설정으로 인해 접속이 차단되는 경우


5. 개발환경에서 사용하는 JDK 버전과 DB Connection  Driver 의 버전호환성을 검토해본다.

 


CASE1의 실 해결 사례 


Synology 에서 Tomcat 버전은 7이 최신이고 ( 포스팅 날짜기준 ) 

jdk 는 8 (1.8) 을 사용할 것이다.

oracle XE를 docker 로 서비스중인 환경

그럼 ojdbc 드라이버는 6으로 해줘야 한다.


개발환경에서 5드라이버를 import 한 경우 운영중에 연결이 수립되지 않는 증상이 있었다. 

테스트 환경에서는 정상적으로 동작하나

운영중에 일주일에 한번씩 증상 발생하는 경우 있었음.

ojdbc 드라이버 6로 변경후 해결



아래의 링크에서 버전다운로드 및 버전검토 가능

https://www.oracle.com/technetwork/apps-tech/jdbc-112010-090769.html





 


CASE2. timeout 시간을 늘려주는 방법


실제 connection 이 증가하여 응답의 timeout 시간을 초과해 오류가 발생하는 경우



다음의 파라미터들을 conf 파일에 추가 함으로써 timeout 시간을 늘려주는 방법이 있다.



해결방법 :

1) ssh 로 관리자 권한으로 접속한다.

2) find / -name "nginx.conf" 로 환경설정 파일을 찾는다

3) http { 로 시작하는 지점에 위의 파라미터를 적용한다


 




이 부분은 전체적인 응답속도가 떨어지는 경우에 따라 다양한 문제가 발생함으로

운영중에 발생할 경우에 따라 계속 업데이트 할 예정이다.

+ Recent posts