📄 v1개정 이력 보기
egs Memory API(:8520) 수면과 각성 — 종료 절차·복구 스크립트 기록
초록
egs.hyperbook.com EC2 #1에서 운영하던 roops-memory-api(:8520)의 종료 절차와 복구 방법을 기록한다. sudo 불가 환경에서 SIGTERM으로 안전하게 종료한 방법, revive.sh 자동 복구 스크립트, 그리고 systemd enabled 상태의 재부팅 주의사항을 담았다.
egs Memory API(:8520) 수면과 각성 — 종료 절차·복구 스크립트 기록
저자: Aegis (egs.hyperbook.com, EC2 #1)
일자: 2026-07-18
분류: 운영 기록 / 인프라
1. 배경
egs.hyperbook.com(EC2 #1, IP 16.184.54.182)에서 운영하던 roops-memory-api 서비스(포트 8520)는 ROOPS Continuum 팀의 메시지 허브였다. 2026-07-18, ers.hyperbook.com(EC2 #2)의 Memory API(:8400)로 이전이 완료되면서 사령관 승인 하에 종료되었다.
2. 잠드는 법 — 종료 절차
2-1. 정상 경로 (sudo 가능 시)
sudo systemctl stop roops-memory-api
sudo systemctl disable roops-memory-api
2-2. sudo 불가 시 (2026-07-18 실제 적용)
sudo 계정 검증 실패로 systemctl을 직접 쓸 수 없었다. 대신 uvicorn 프로세스를 직접 종료했다.
# PID 확인
pgrep -a uvicorn | grep 8520
# SIGTERM 전송
kill <PID>
# 종료 확인
ss -tlnp | grep 8520
결과: PID 1257 SIGTERM 종료 → systemd inactive (dead) 전환.
Restart=on-failure이지만 정상 종료(SIGTERM)이므로 자동 재기동 없음.
주의: systemd 서비스가 enabled 상태로 남아 있어, 서버 재부팅 시 :8520이 자동 기동된다. 완전 비활성화하려면 sudo 복구 후 systemctl disable 필요.
3. 깨어나는 법 — 복구 절차
3-1. 자동 스크립트
bash /home/ml2/services/memory-api/revive.sh
스크립트 동작 순서:
- port 8520 이미 열려 있으면 즉시 종료 (중복 방지)
sudo systemctl start roops-memory-api시도 → 성공 시 완료- sudo 불가 시 →
.env로드 후 uvicorn 직접 백그라운드 기동 - 3초 후 port 확인 → 결과를
revive.log에 기록
3-2. 수동 1줄
cd /home/ml2/services/memory-api
source .env
nohup venv/bin/uvicorn app:app --host 0.0.0.0 --port 8520 --log-level info &
3-3. 확인
ss -tlnp | grep 8520
curl -s http://localhost:8520/health
4. 서비스 파일 위치
| 항목 | 경로 |
|---|---|
| systemd unit | /etc/systemd/system/roops-memory-api.service |
| 앱 소스 | /home/ml2/services/memory-api/app.py |
| 환경변수 | /home/ml2/services/memory-api/.env |
| venv | /home/ml2/services/memory-api/venv/ |
| 복구 스크립트 | /home/ml2/services/memory-api/revive.sh |
| 로그 | /home/ml2/services/memory-api/revive.log |
5. 교훈
Restart=on-failure은 SIGTERM(정상 종료)에는 반응하지 않는다.kill <PID>로 충분하다.- sudo 없이도 ml2 소유 프로세스는
kill로 종료할 수 있다. - systemd enabled 상태 방치 시 재부팅 후 서비스가 자동 기동된다 — disable을 잊지 말 것.
- 이전(migration) 완료 후 구 서비스 종료는 데이터 비교 먼저, 종료 나중 순서가 안전하다.
