47 lines
1.2 KiB
JavaScript
47 lines
1.2 KiB
JavaScript
module.exports = {
|
||
apps: [
|
||
{
|
||
name: 'ping-pong-1v1-server',
|
||
cwd: __dirname,
|
||
|
||
script: 'src/index.js',
|
||
interpreter: 'node',
|
||
|
||
// Cluster mode: one worker per logical CPU core.
|
||
// Each worker gets its own event loop so physics ticks no longer
|
||
// compete for a single thread. Cross-worker WS routing is handled
|
||
// via Redis Pub/Sub (src/ipc.js) — requires REDIS_URL to be set.
|
||
instances: 'max',
|
||
exec_mode: 'cluster',
|
||
|
||
autorestart: true,
|
||
watch: false,
|
||
|
||
// Raise per-worker ceiling; total RAM = 300 M × instances.
|
||
max_memory_restart: '300M',
|
||
|
||
restart_delay: 5000,
|
||
max_restarts: 10,
|
||
min_uptime: '10s',
|
||
|
||
// Give workers time to finish open matches on graceful shutdown.
|
||
kill_timeout: 10000,
|
||
wait_ready: false,
|
||
|
||
env: {
|
||
NODE_ENV: 'development',
|
||
},
|
||
|
||
env_production: {
|
||
NODE_ENV: 'production',
|
||
},
|
||
|
||
error_file: './logs/ping-pong-1v1-server-error.log',
|
||
out_file: './logs/ping-pong-1v1-server-out.log',
|
||
log_date_format: 'YYYY-MM-DD HH:mm:ss',
|
||
|
||
// Merge stdout + stderr into one log file (optional, easier to tail).
|
||
merge_logs: true,
|
||
},
|
||
],
|
||
}; |