Files
homeclaw/.smallclaw
kimandClaude Sonnet 5 c271c96bdb v4.1.23: NVR MJPEG 스트림 메모리 누수 수정 — OOM으로 RDP까지 끊기던 사고 대응
homeclaw 게이트웨이 node 프로세스가 34GB+까지 자라 커널 OOM killer에
강제종료되고, 그 여파로 systemd-oomd가 GNOME 세션(D-Bus 포함)까지 같이
죽여 원격데스크탑 연결이 끊기는 사고가 하루 4회 발생. 원인은 NVR 라이브
MJPEG 프레임 파서와 응답 스트림 두 곳의 무제한 버퍼 증식.

- nvr.ts: 손상 스트림에서 SOI만 오고 EOI가 안 오면 프레임 버퍼가 무한
  이어붙기하는 것을 20MB 캡으로 차단 (MAX_FRAME_BYTES)
- nvr.ts: res.write()가 false를 반환할 때(클라이언트가 못 따라옴) ffmpeg
  stdout을 pause()하고 'drain'에서 resume()하는 백프레셔 처리 추가 —
  프레임 캡만으로는 재발을 못 막았던 잔여 누수의 실제 원인
- .smallclaw/config.json, config.ts: nvr 설정 블록(host/rtspPort/경로
  템플릿/계정) 추가, password는 vault 경유
- nvr-app.html: 4분할→5분할 라이브, 녹화 목록 조회 탭 추가
- index.html: 홈CCTV 앱 런처 버튼 추가

homeclaw.service에 MemoryMax=8G/MemoryHigh=6G cgroup 상한을 시스템 드롭인
으로 별도 적용(이 커밋에는 미포함, systemd 유닛 파일은 저장소 밖)해
재발해도 GNOME 세션까지는 안 죽도록 안전망도 걸어둠.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 16:38:39 +09:00
..
2026-04-29 11:45:59 +09:00