접속마다 뜨는 스트리밍 프로세스가 정리되지 않던 문제
2026.10.04 · 1분
개요
| 항목 | 내용 |
|---|---|
| 유형 | 트러블슈팅 |
| 시점 | PoC 개발 과정 |
| 상태 | 접속 단위 프로세스 추적과 종료 처리 구현 |
| 관련 영역 | 실시간 영상 관제, ffmpeg, WebSocket |
| 나의 역할 | 문제 대응과 자원 정리 로직 구현 |
1. 상황과 제약
관제 화면은 로봇 카메라의 RTSP 스트림을 ffmpeg로 변환해 WebSocket으로 받아 보여 줬습니다. 스트리밍 코드는 전달받은 것이었는데 그대로는 동작하지 않아, 수정해서 관제 서버에 통합했습니다.
이 구조에서는 관제 화면에 접속할 때마다 ffmpeg 프로세스가 하나씩 떠서 RTSP를 끌어옵니다. 접속이 끝나도 프로세스가 정리되지 않았고, 영상이 끊기거나 느려졌습니다.
2. 검토와 판단
접속이 끝난 뒤에도 프로세스가 남아 RTSP를 계속 끌어오면서 쌓이고 있었습니다. 접속과 프로세스의 생명주기를 묶어, 접속이 끝나면 그 프로세스도 종료되게 하기로 했습니다.
3. 실행과 조율
- 클라이언트 소켓과 ffmpeg 프로세스를
Map<Socket, ChildProcess>로 1:1 추적했습니다. - 접속이 끊기면 해당 프로세스를
SIGINT로 종료하고 맵에서 지웠습니다. - 서버 모듈이 종료될 때는 남아 있는 프로세스를 모두 정리했습니다.
4. 결과와 확인
접속이 끝나면 그 접속의 ffmpeg 프로세스도 함께 종료돼, 쓰지 않는 프로세스가 쌓이지 않게 됐습니다.