본문 바로가기

IT 기기 팁 & 리뷰

[Plex] 자동 재시작

 

NAS에서 Plex Server를 운영하다보면 간혹 서버가 죽는데, 원인이 참 다양하다.

- 서버 자체의 버그로 인해 죽는 경우

- 특정 영상의 트랜스코딩에 문제가 있어서 죽는 경우

- 파일/폴더가 너무 많아서 죽는 경우

- 영상 파일 자체에 오류가 있는 경우

- 자막 파일에 오류가 있는 경우 등등..

 

디버그 로그를 수집해서 Plex 개발자에게 전달하더라도 영상 재생 상황이 너무나 다양하기 때문에 원인을 파악하기 어려운 경우가 많다.

 

따라서 우선은 죽은 서버를 다시 살려가면서 사용하는 것이 최선인데, Synology Package Manager 에서는 앱을 자동 재시작해주는 옵션을 제공해주지 않고 서버가 죽더라도 아무런 알림이 오지 않아서 서비스 중단 여부를 일일이 파악하기 어렵다.

 

그래서 방법을 찾다보니 Plex 포럼에 작업 스케줄러를 와치독으로 활용하는 방법이 있었고, 테스트 해보니 정상적으로 동작하였다.

 


원리

작업 스케줄러를 통해 1분마다 Plex Server 가 사용하는 32400 포트 응답 여부를 확인. 응답이 없으면 서비스가 죽은 것으로 간주하고 서비스를 재시작.

 

Step

아래 내용을 plex_restart.sh 등의 쉘 스크립트 파일로 저장.

#!/bin/bash
echo Checking if plex is running...
#if /usr/syno/bin/synopkg is_onoff "Plex Media Server" > /dev/null
if echo > /dev/tcp/127.0.0.1/32400 > /dev/null
then
 echo Plex is running.
 exit 0
else
 echo Plex is not running.  Will attempt to start it.
 echo
 echo --------------------Last 20 log entries--------------------
 tail -20 /volume1/Plex/Library/Application\ Support/Plex\ Media\ Server/Logs/Plex\ Media\ Server.log
echo --------------------End of log--------------------
 echo
 /usr/syno/bin/synopkg stop "Plex Media Server"
 sleep 60
 /usr/syno/bin/synopkg start "Plex Media Server"
 exit 1
fi

 

파일을 NAS 내 적절한 위치로 복사

ex) \\NAS_IP\homes\NAS_USER\script\plex_restart.sh

 

제어판 > 작업 스케줄러 > 예약된 작업 추가

작업명 Plex Restart (예)
스케줄 매일 / 1분마다 
사용자 정의 스크립트 bash /volume1/homes/NAS_USER/script/plex_restart.sh