[Gunicorn] 멀티 프로세스 서버 로그 분석 - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
1. 개요
멀티 프로세스 아키텍쳐에서 서버 로그가 어떻게 뜨는지를 분석함으로써 아키텍쳐의 로직 이해
2. 멀티 프로세스로 서버 띄웠을 때
-
로그
~/d/5-yeosa-ongi-ai │ on feat/#101_test *1 !1 ?1 gunicorn -c gunicorn.conf.py app.main:app [2025-05-30 15:22:59 +0900] [63080] [INFO] Starting gunicorn 23.0.0 [2025-05-30 15:22:59 +0900] [63080] [INFO] Listening at: http://0.0.0.0:8000 (63080) [2025-05-30 15:22:59 +0900] [63080] [INFO] Using worker: uvicorn.workers.UvicornWorker [2025-05-30 15:22:59 +0900] [63088] [INFO] Booting worker with pid: 63088 [2025-05-30 15:22:59 +0900] [63088] [INFO] Started server process [63088] [2025-05-30 15:22:59 +0900] [63088] [INFO] Waiting for application startup. [2025-05-30 15:22:59 +0900] [63090] [INFO] Booting worker with pid: 63090 [2025-05-30 15:22:59 +0900] [63088] [INFO] Application startup complete. [2025-05-30 15:22:59 +0900] [63090] [INFO] Started server process [63090] [2025-05-30 15:22:59 +0900] [63090] [INFO] Waiting for application startup. [2025-05-30 15:22:59 +0900] [63090] [INFO] Application startup complete. [2025-05-30 15:22:59 +0900] [63091] [INFO] Booting worker with pid: 63091 [2025-05-30 15:22:59 +0900] [63091] [INFO] Started server process [63091] [2025-05-30 15:22:59 +0900] [63091] [INFO] Waiting for application startup. [2025-05-30 15:22:59 +0900] [63091] [INFO] Application startup complete. ^C[2025-05-30 15:23:05 +0900] [63080] [INFO] Handling signal: int [2025-05-30 15:23:05 +0900] [63090] [INFO] Shutting down [2025-05-30 15:23:05 +0900] [63088] [INFO] Shutting down [2025-05-30 15:23:05 +0900] [63091] [INFO] Shutting down [2025-05-30 15:23:05 +0900] [63090] [INFO] Waiting for application shutdown. [2025-05-30 15:23:05 +0900] [63090] [INFO] Application shutdown complete. [2025-05-30 15:23:05 +0900] [63090] [INFO] Finished server process [63090] [2025-05-30 15:23:05 +0900] [63080] [ERROR] Worker (pid:63090) was sent SIGINT! [2025-05-30 15:23:05 +0900] [63088] [INFO] Waiting for application shutdown. [2025-05-30 15:23:05 +0900] [63091] [INFO] Waiting for application shutdown. [2025-05-30 15:23:05 +0900] [63088] [INFO] Application shutdown complete. [2025-05-30 15:23:05 +0900] [63088] [INFO] Finished server process [63088] [2025-05-30 15:23:05 +0900] [63091] [INFO] Application shutdown complete. [2025-05-30 15:23:05 +0900] [63091] [INFO] Finished server process [63091] [2025-05-30 15:23:05 +0900] [63080] [ERROR] Worker (pid:63091) was sent SIGINT! [2025-05-30 15:23:05 +0900] [63080] [ERROR] Worker (pid:63088) was sent SIGINT! [2025-05-30 15:23:05 +0900] [63080] [INFO] Shutting down: Master
a. 마스터 프로세스 시작
[2025-05-30 15:22:59 +0900] [63080] [INFO] Starting gunicorn 23.0.0
- PID 63080인 Gunicorn 마스터 프로세스가 시작됨
- 사용 버전: 23.0.0
[2025-05-30 15:22:59 +0933300] [63080] [INFO] Listening at: http://0.0.0.0:8000 (63080)
- 외부에서 접근 가능한 모든 인터페이스(IP)에서 포트 8000을 리슨 중
- 마스터 PID는 63080
b. 워커 프로세스 시작
[2025-05-30 15:22:59 +0900] [63080] [INFO] Using worker: uvicorn.workers.UvicornWorker
- 워커는 UvicornWorker (ASGI 지원을 위한 Uvicorn 기반 워커)
[2025-05-30 15:22:59 +0900] [63088] [INFO] Booting worker with pid: 63088
[2025-05-30 15:22:59 +0900] [63090] [INFO] Booting worker with pid: 63090
[2025-05-30 15:22:59 +0900] [63091] [INFO] Booting worker with pid: 63091
- Gunicorn이 3개의 워커를 fork()하여 실행
c. 워커 서버 초기화 및 실행
[63088/63090/63091] [INFO] Started server process [PID]
- 각 워커가 Uvicorn 서버를 독립적으로 실행
[PID] [INFO] Waiting for application startup.
FastAPI
앱의@app.on_event("startup")
훅을 실행 전 대기 중
[PID] [INFO] Application startup complete.
startup
훅 실행 완료. 워커 준비 완료됨
3. 서버 종료 시도 (Ctrl+C 또는 SIGINT)
a. SIGINT 시그널 발생
[2025-05-30 15:23:05 +0900] [63080] [INFO] Handling signal: int
- 사용자가
Ctrl+C
로 종료 →SIGINT
시그널 발생 (interruption)
b. 종료 신호 전파
[63088~91] [INFO] Shutting down
- 워커들에게 종료 신호 전파
c. shutdown 훅 실행
[63088~91] [INFO] Waiting for application shutdown.
@app.on_event("shutdown")
훅 실행 대기
d. 워커 프로세스 종료
[PID] [INFO] Application shutdown complete.
[PID] [INFO] Finished server process [PID]
- shutdown 완료 후 각 워커가 프로세스를 종료함
[63080] [ERROR] Worker (pid:630XX) was sent SIGINT!
- Gunicorn이 워커에게
SIGINT
를 보냈고 정상적으로 수신함
e. 마스터 종료
[63080] [INFO] Shutting down: Master
- 모든 워커가 정상 종료된 후 마스터 프로세스도 종료