Files
sena_db_api_layer/PM2_GUIDE.md
silverpro89 816794a861
All checks were successful
Deploy to Production / deploy (push) Successful in 23s
update
2026-01-27 18:33:35 +07:00

3.4 KiB

PM2 Process Management

PM2 script để quản lý tất cả các processes của Sena School Management System.

Cài đặt PM2

npm install -g pm2

Processes

System bao gồm các processes sau:

  1. sena-api - Main API Server (2 instances, cluster mode)
  2. worker-db-write - Database Write Worker (1 instance)
  3. worker-lesson-fill - Lesson Data Fill Worker (1 instance)
  4. worker-process-data - Process Data Worker (2 instances)

Commands

Quản lý tất cả processes

# Start tất cả processes
npm run pm2:start

# Stop tất cả processes
npm run pm2:stop

# Restart tất cả processes
npm run pm2:restart

# Delete tất cả processes
npm run pm2:delete

# Xem status của tất cả processes
npm run pm2:status

Quản lý từng nhóm

# Chỉ start API server
npm run pm2:start:api

# Chỉ start workers
npm run pm2:start:workers

Logs & Monitoring

# Xem tất cả logs
npm run pm2:logs

# Xem logs của một process cụ thể
pm2 logs sena-api
pm2 logs worker-process-data

# Xóa tất cả logs
npm run pm2:flush

# Mở monitor dashboard
npm run pm2:monit

Auto-start khi boot

# Cấu hình PM2 khởi động cùng hệ thống
npm run pm2:startup

# Sau đó chạy command mà PM2 hiển thị (với sudo nếu cần)
# Rồi save danh sách processes
npm run pm2:save

Commands nâng cao

# Restart một process cụ thể
pm2 restart sena-api

# Stop một process cụ thể
pm2 stop worker-lesson-fill

# Xem thông tin chi tiết
pm2 describe sena-api

# Xem metrics
pm2 monit

# Scale API instances
pm2 scale sena-api 4

File cấu hình

ecosystem.config.js

File cấu hình PM2 chính, định nghĩa:

  • Tên processes
  • Script path
  • Số lượng instances
  • Environment variables
  • Log files
  • Memory limits
  • Restart policies

Log Files

Logs được lưu trong thư mục logs/:

logs/
├── api-error.log
├── api-out.log
├── worker-db-write-error.log
├── worker-db-write-out.log
├── worker-lesson-fill-error.log
├── worker-lesson-fill-out.log
├── worker-process-data-error.log
└── worker-process-data-out.log

Production Deployment

1. Install PM2 globally

npm install -g pm2

2. Start all processes

npm run pm2:start

3. Save process list

npm run pm2:save

4. Configure auto-start

npm run pm2:startup
# Chạy command được hiển thị
npm run pm2:save

5. Monitor

npm run pm2:status
npm run pm2:logs

Troubleshooting

Process không start

# Xem logs để biết lỗi
pm2 logs <process-name>

# Xem thông tin chi tiết
pm2 describe <process-name>

Memory leak

# Processes tự động restart khi vượt quá giới hạn memory
# API: 1GB
# Workers: 512MB

Restart processes sau khi update code

npm run pm2:restart

Xóa và start lại từ đầu

npm run pm2:delete
npm run pm2:start

Environment Variables

Thay đổi environment trong ecosystem.config.js:

env: {
  NODE_ENV: 'production',
  PORT: 3000,
},
env_development: {
  NODE_ENV: 'development',
  PORT: 3000,
}

Chạy với environment cụ thể:

pm2 start ecosystem.config.js --env development
pm2 start ecosystem.config.js --env production

Help

npm run pm2:help