[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
[Linux] ps 명령어 / kill 명령어 / 프로세스 확인 및 죽이기 / 프로세스 일괄 종료 / kill process
# 프로세스란? 실행중인 프로그램 # ps 명령어 - Process 와 관련 linux 명령어는 ps 입니다. 옵션 기능 -e 시스템 상의 모든 프로세스 정보를 출력 -f 상세한 정보를 출력 (full-format) $ ps -ef UID PID PPID C..
frogand.tistory.com
애플리케이션 구동도 중요하지만, 안전한 종료야 말로 신규 버전을 배포하기 위해 필수적으로 진행해야 한다.
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/
Graceful Shutdown Spring Boot Applications
This guide walks through the process of graceful shutdown a Spring Boot application. The implementation of this blog post is originally created by Andy Wilkinson and adapted by me to Spring Boot 2. The code is based on this GitHub comment. Introduction A l
blog.marcosbarbero.com
https://heowc.dev/2018/12/27/spring-boot-graceful-shutdown/
Spring Boot - 안전하게 종료시키기 | 허원철의 개발 블로그
Spring Boot를 안전하게 종료시키는 방법에 대한 소개이다.
heowc.dev
https://kapentaz.github.io/spring/Spring-Boot-Actuator-Graceful-Shutdown/#
Spring Boot Actuator Graceful Shutdown
Spring Boot 환경에서 application을 shutdown 하는 방법 중 대표적인 것이 actuator의 shutdown endpoint 기능을 이용하는 것입니다. 이 endpoint는 예상과 달리 처리 중인 요청이 있더라도 그냥 shutdown 처리를 합니
kapentaz.github.io
'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 |
댓글 개