- TIL -
문제 발생)
분명히 배포가 성공되었고 제대로 통신이 되는지 테스트까지 마친 뒤 프론트 서버를 개발하는 지인에게 서버의 주소를 알려주고 통신이 가능한 상태라고
얘기했다.
그런데 프론트 개발자 분이 통신을 시도했을때 정상적으로 통신되지 않는 현상이 발생되었고 포스트맨 앱으로 확인해보니 다음과 같은 문제가 발생했다.
혹시 몰라 GCP 서버가 내려갔는지 확인해보았지만 정상적으로 살아있는 모습이다.
즉 서버 PC 는 켜져있는데 웹서버만 다운되었다는 소리인데...
이유를 검색해봐도 마땅한 해결책이 나오지 않았고 웹서버를 다시 CLI 환경에서 가동시키니 정상적으로 작동되는 것을 확인했다.
그렇다면 웹서버가 다운되는 이유를 알기 위해 웹서버가 켜지고 다운되는데 까지 시간을 한번 측정해보고자 했다.
( 각 테스트는 1분마다 주기적으로 연결이 되는지 확인을 통해 진행되었다 )
16:48 웹서버 실행 후 SSH 접속 종료 -> 16:58 웹서버 다운
17:04 웹서버 실행 후 SSH 접속 유지 -> 17:14 웹서버 정상 작동 확인 후 SSH 종료 -> 17:24 웹서버 다운
테스트 결과 10분 주기로 웹서버가 종료되는 것 확인....!
문제 해결 방법1)
나는 저 10분 단위가 뭔지 고민하던 와중에 혹시 절전모드 때문에 웹서버가 종료되는 것이 아닌가라는 생각을 하게 되었고 리눅스의 절전모드
해제 방법에 대해 구글링하여 절전 모드를 종료하고 테스트 해보기로 하였다.
1) Ubuntu(Linux) 절전 모드 해제하기
절전 모드를 해제하기 전에 절전모드가 설정되어 있는지 확인
( sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target )
절전 모드를 모두 비활성화
( sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target )
절전 모드 확인
( sudo systemctl status sleep.target suspend.target hibernate.target hybrid-sleep.target )
절전모드를 다시 설정해야하는 상황에는 아래 명령어를 입력하면 된다.
( sudo systemctl unmask sleep.target suspend.target hibernate.target hybrid-sleep.target )
2) 서버 작동 테스트
17:41 웹서버 정상 작동 -> 17:50 웹서버 다운
테스트 결과 절전모드로 인한 문제는 아닌 것으로 보인다....
해결 방법2)
곰곰히 다른 문제를 생각해보던 와중 혹시 SSH 연결이 끊기면서 콘솔이 닫혀서 웹서버가 종료되는 것은 아닌지에 대한 의문이 생겼다.
그래서! 콘솔이 닫혀도 계속 서버가 작동되는 방법을 서치하던 와중에 nohup 이라는 명령어를 알게 되었고 이 방법으로 다시 테스트를 진행해보고자 한다!
1) nohup 명령어를 사용하여 웹서버 실행
기존 명령어와 동일하지만 앞에 nohup 을 붙여주어서 shell 창이 껴져도 백그라운드에서 서버가 작동할 수 있게 작동시켰다.
( sudo nohup java -jar [자바 프로젝트의 jar 파일] )
2) 서버 작동 테스트
18:00 웹서버 정상 작동 -> 18:10 웹서버 정상 작동 -> 18:20 웹서버 정상 작동 -> 18:30 웹서버 정상 작동
-> 23:02 웹서버 정상 작동
후기)
결론은 SSH 연결을 종료하면서 10분 정도 텀을 두고 서버의 쉘이 종료되기 때문에 발생된 일이었다.
nohup 명령어를 통해 백그라운드로 프로레스를 실행해 놓은 상태인데 이보다 좋은 방법은 nginx 를 사용하여 배포하는 방식이라고 하니 해당 방식을 구현해보도록 해야겠다.
그리고 무료 할당된 서버의 성능이 썩 좋은 편은 아니라서 조만간 미니PC 를 하나 할당해서 공인 IP 를 부여하고 DNS 와 매치하여 배포하는 과정을 진행해보려 한다.
'TIL' 카테고리의 다른 글
[TIL] 2024.12.13 - 프로젝트 배포하기2 ( Docker Compose 를 사용하여 Spring, React 프로젝트 배포 ) (2) | 2024.12.13 |
---|---|
[TIL] 2024.12.06 - 프로젝트 배포하기1 ( Docker Compose 를 사용하여 Spring, React 프로젝트 배포 ) (1) | 2024.12.06 |
[TIL] 2024.11.19 - GCP 를 활용하여 Spring Boot 프로젝트를 배포해보기2 (0) | 2024.11.19 |
[TIL] 2024.11.18 - jsp 를 활용하여 이메일 인증 코드 발송하기 (2) | 2024.11.18 |
[TIL] 2024.11.17 - GCP 를 활용하여 Spring Boot 프로젝트를 배포해보기1 (1) | 2024.11.17 |