일반 버킷으로 서버 굴릴 때는 오류가 많이 나지 않지만, 많은 모드를 적용하여 서버를 굴릴 때는 오브젝트간의 오류, 충돌 등으로 크래쉬가 빈번하게 발생하곤 한다.
크래쉬에 대한 문제점을 찾고 해결하는게 1순위이긴 하지만 그래도 24시간 돌려야 되는 서버가 중간에 끊어지게 되면 사용자들이 불편함을 느낄 수 있기 때문에 서버는 지속적으로 굴러가야 한다.
그래서 크래쉬가 터져도 자동으로 재시작 되는 프로세스가 있어야 한다.
찾아보니 버킷 자체에 크래쉬가 터지면 자동재시작이 되는 서버 옵션이 존재하지만 모드 버킷에는 없다고 한다.
즉 프로세스를 하나 그냥 만들어줘야 한다.
1. 먼저 메모장을 켜준다.
@echo off
:repeat
Timeout 3 > NUL
@tasklist | find "java.exe" /c > NUL
IF %ErrorLevel%==1 goto 1
IF NOT %ErrorLevel%==1 goto 0
:0
goto repeat
:1
start run.bat
goto repeat
출처 : https://www.ddengle.com/mining/2310956
● 위 코드를 그대로 복사하고 다른 이름으로 저장하고 파일 형식으로 '모든 파일' 이라고 하고 파일 이름에 'restart.bat' 이라고 적고 저장한다.
코드 설명을 잠시 하자면 tasklist 즉 프로세스 리스트를 확인하고 | find "java.exe" java.exe 라는 프로세스를 찾고 없으면 goto 1 즉 1 코드를 실행.
그게 아니라면 0 코드 실행.
0 코드는 repeat 코드를 실행하는 것인데 3초마다 프로세스가 죽었는지 살았는지 확인.
2. 만들어진 restart.bat 파일을 모드 버킷 실행 파일이 있는 폴더에 저장 또는 이동해준다.
그럼 1코드가 실행될 때마다 같은 폴더에 있는 원래 모드 버킷 실행 파일(run.bat)을 실행시켜 주는 것이다.
위와 같은 형식으로 그냥 켜두면 된다.
이제 서버가 크래쉬가 터져서 꺼지게 되면 자동으로 java.exe 프로세스도 꺼지게 된다.
그럼 java.exe가 프로세스 리스트에 없는걸 timeout을 통해 확인하고 다시 재시작 하게 된다.
'서버 > Server' 카테고리의 다른 글
[Server] 팰월드 서버 크래쉬 났을 시 자동 재시작 (0) | 2024.01.30 |
---|---|
[Server] Nginx 서버를 통한 리버스 프록시 및 로드밸런싱 구축 (0) | 2023.04.06 |
[Server]Ngrok으로 아무런 설정 없이 외부에서 간단한 파일 공유 (0) | 2022.07.17 |
[Server]Cloudflare와 Ngrok의 리버스 프록시 구동 방식의 차이점 (0) | 2022.07.14 |
[Server]IaaS vs PaaS vs SaaS 클라우드 서비스 모델 개요 (0) | 2022.05.29 |
댓글