systemd: WebSocket/실시간 서버용 Node 유닛 팁
연결이 많은 서버에서 NOFILE, graceful shutdown, 재시작 정책을 포함한 systemd 예시
WebSocket/실시간 서버는 “오래 유지되는 연결”이 많아, 기본값으로는 파일 디스크립터(NOFILE) 한도나 종료 타임아웃이 발목을 잡을 수 있습니다.
관련 템플릿: systemd: Node 서비스 유닛 템플릿 (EnvironmentFile 포함)
myrealtime.service 예시
[Unit]
Description=myrealtime (Node WebSocket)
After=network.target
[Service]
Type=simple
User=myrealtime
WorkingDirectory=/srv/myrealtime/current
EnvironmentFile=/etc/myrealtime/myrealtime.env
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=2
# 연결이 많은 서비스에서 자주 필요
LimitNOFILE=65535
# graceful shutdown을 위해 여유를 준다
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target
운영 체크리스트
- 앱이
SIGTERM에서 연결을 닫고 종료(graceful shutdown)하는지 확인 - 에러 원인 파악은
journalctl부터:journalctl: systemd 서비스 장애 디버깅