File size: 1,788 Bytes
4cb7ab8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Service Monitoring & Auto-Recovery Guide

This guide explains how to ensure the Visa Photo Maker services (Frontend & Backend) remain online and automatically recover from crashes or stops.

## 1. Watchdog Script

A simple bash script `scripts/watchdog.sh` has been created to check the health of your services every minute.

- **Location**: `scripts/watchdog.sh`
- **What it does**:
  1. Checks if **Port 13002** (Backend) is open.
  2. Checks if **Port 13001** (Frontend) is open.
  3. If a port is closed, it triggers `pm2 restart <app_name>`.
  4. Logs all incidents to `watchdog.log` in the project root.

## 2. Setup Instructions

### Step 1: Make Script Executable
Run this in your terminal:
```bash
chmod +x scripts/watchdog.sh
```

### Step 2: Test the Script
Run it manually once to make sure it works (it should be silent if everything is OK):
```bash
./scripts/watchdog.sh
```

### Step 3: Enable Auto-Run (Crontab)
To make it run every minute automatically:

1. Open your crontab editor:
   ```bash
   crontab -e
   ```

2. Add the following line at the bottom of the file:
   *(Update the path if you moved the project)*
   ```bash
   * * * * * /home/ubuntu/code/visa_photo_maker/scripts/watchdog.sh
   ```

3. Save and exit (usually `Ctrl+O`, `Enter`, `Ctrl+X` if using nano).

## 3. Viewing Logs

To see if the watchdog has restarted anything, check the log file:
```bash
tail -f watchdog.log
```

## 4. Other Protections Enabled

Besides this script, the following PM2 protections are already active:

1.  **Memory Limit**: Backend restarts if it exceeds **2GB** RAM.
2.  **Backoff Restart**: If the app crashes repeatedly, PM2 waits 100ms+ before restarting to prevent CPU spikes.
3.  **4 Workers**: The backend runs 4 parallel instances to utilize the quad-core CPU.