[Graceful Shutdown] kill -9 쓰지말자!
kill -9로 종료하는 것은 좋지않다. jvm shutdown hook 또는 spring의 @PreDestroy의 실행을 보장하기 힘들다. kill -2(SIGINT) 혹은 kill -15(SIGTERM)을 쓰는 것이 좋다.
kill 명령어와 Graceful Shutdown에 대해서 알아보고자 한다.
kill 명령어 알아보기
https://frogand.tistory.com/69
애플리케이션 구동도 중요하지만, 안전한 종료야 말로 신규 버전을 배포하기 위해 필수적으로 진행해야 한다.
Graceful Shutdown이란?
프로그램이 종료될 때, 최대한 side effect없이 로직을 잘 처리하고 종료하는 것을 의미한다.
지속가능한 소프트웨어를 위해 폐기 가능한(Disposability) 시스템을 구성해야 한다. 그리고 소프트웨어의 안전성을 높이기 위하여 graceful shutdow이 필요하다. 프로세스가 갑작스러운 하드웨어 문제에 의해 죽는 상황이 발생하더라도 문제가 없는 견고한 프로그램을 만들어야 한다. 프로그래머는 이를 준비해야 한다. (The Twelve-Factor App 방법론)
kill -9 $PID는 강제종료이다. -9인 SIGKILL은 리소스를 정리하는 핸들러를 지정하지 않고 프로세스를 바로 죽인다는 의미이다. 만약, 실행 중인 쓰레드가 있더라도 이를 무시하고 중단하는데 혹시라도 굉장히 중요한 작업중이라면 최악의 상황이 일어날 수 있기 때문이다.
Spring boot에서는 actuator를 사용해서 graceful shutdown을 할 수 있다.
참고자료
https://blog.marcosbarbero.com/graceful-shutdown-spring-boot-apps/
https://heowc.dev/2018/12/27/spring-boot-graceful-shutdown/
https://kapentaz.github.io/spring/Spring-Boot-Actuator-Graceful-Shutdown/#
'programming language > Dev' 카테고리의 다른 글
메시지 큐 Message Queue (0) | 2023.02.17 |
---|---|
Boolean 변수에 적절한 이름을 지어주기 (2) | 2023.02.15 |
Mac OS에 NTFS 읽고 쓰기 위한 Mounty 설치 (0) | 2022.05.31 |
[SSH] SSH 접속정보 설정파일로 저장하여 접속하기 (0) | 2022.02.15 |
[MySQL] SSH 이용해서 sql파일 import 또는 export 하기 / Import and Export (*.sql file) via SSH (0) | 2022.01.25 |
댓글 개