Saturday, October 18, 2025

การใช้งา pm2 จัดการ node project เบื้องต้น

https://gemini.google.com/share/e70b6bf55e75

PM2 เป็นตัวจัดการโพรเซส (Process Manager) สำหรับ Node.js ที่มีประสิทธิภาพและนิยมใช้ในการนำแอปพลิเคชัน Node.js ไปใช้งานจริง (Production) บนเซิร์ฟเวอร์ มันช่วยให้แอปพลิเคชันของคุณทำงานได้อย่างต่อเนื่องตลอดเวลา (always-on), จัดการการโหลดบาลานซ์ (Load Balancing), และดูแลการรีสตาร์ทอัตโนมัติเมื่อเกิดข้อผิดพลาด

นี่คือวิธีการใช้งาน PM2 ตั้งแต่การติดตั้งไปจนถึงการใช้งานเบื้องต้น:

1. การติดตั้ง PM2

ติดตั้ง PM2 แบบ Global บนเซิร์ฟเวอร์ของคุณ เพื่อให้สามารถเรียกใช้คำสั่งได้จากทุกที่:

Bash
npm install -g pm2

2. การเริ่มโปรเจกต์ (Start Your Project)

มีหลายวิธีในการเริ่มต้นโปรเจกต์ด้วย PM2:

A. เริ่มต้นง่าย ๆ (Simple Start)

รันไฟล์หลักของแอปพลิเคชันของคุณ (สมมติว่าเป็น index.js หรือ app.js):

Bash
pm2 start index.js

B. ตั้งชื่อและเพิ่มพารามิเตอร์

คุณสามารถตั้งชื่อโพรเซสเพื่อระบุได้ง่ายขึ้น และตั้งค่าให้รีสตาร์ทอัตโนมัติเมื่อไฟล์มีการเปลี่ยนแปลง (สำหรับ Development/Testing):

Bash
pm2 start app.js --name "my-web-app" --watch
  • --name: ตั้งชื่อโพรเซส

  • --watch: โพรเซสจะรีสตาร์ทอัตโนมัติเมื่อโค้ดมีการเปลี่ยนแปลง (ควรปิดใน Production)

C. โหมด Cluster (Load Balancing)

PM2 สามารถสร้างโพรเซสย่อย (Worker Processes) หลายตัวเพื่อใช้ประโยชน์จาก CPU หลายคอร์บนเซิร์ฟเวอร์ของคุณ ซึ่งช่วยเพิ่มประสิทธิภาพและรองรับการโหลดบาลานซ์:

Bash
# โดยที่ N คือจำนวน CPU Cores ที่คุณต้องการใช้ หรือใช้ 'max' เพื่อใช้ทุก Core
pm2 start app.js -i N
# หรือใช้ 'max' เพื่อใช้ทุก Core ที่มี
pm2 start app.js -i max

PM2 จะดูแลการกระจายคำขอ (Load Balancing) ไปยังโพรเซสย่อยทั้งหมดให้คุณโดยอัตโนมัติ


3. การจัดการสถานะ (Process Management)

นี่คือคำสั่งพื้นฐานในการควบคุมโพรเซสที่คุณรันอยู่:

คำสั่ง (Command)คำอธิบาย (Description)
pm2 status หรือ pm2 lsแสดงรายการโพรเซสทั้งหมดที่รันอยู่พร้อมสถานะ
`pm2 stop <nameid>`
`pm2 restart <nameid>`
`pm2 delete <nameid>`
pm2 stop allหยุดโพรเซสทั้งหมด
pm2 killฆ่าโพรเซส Demon (โพรเซสหลักของ PM2)

4. การจัดการ Log และ Monitoring

A. ดู Log แบบ Real-time

ใช้คำสั่งนี้เพื่อดู Log ทั้งหมดจากโพรเซสของคุณในหน้าจอเดียว:

Bash
pm2 logs
# หรือดู Log ของโพรเซสที่ระบุเท่านั้น
pm2 logs <name|id>

B. ดูสถานะทรัพยากร (Monitoring)

PM2 มีแดชบอร์ดใน Terminal ที่ช่วยให้คุณติดตามสถานะ CPU, Memory, และ Request Per Minute ได้แบบเรียลไทม์:

Bash
pm2 monit

5. การตั้งค่าให้รันอัตโนมัติเมื่อรีบูต (Startup/Daemon)

สิ่งสำคัญใน Production คือการทำให้ PM2 และแอปพลิเคชันของคุณกลับมาทำงานได้ทันทีหลังจากที่เซิร์ฟเวอร์รีบูต:

  1. สร้าง Startup Script:

    Bash
    pm2 startup
    

    คำสั่งนี้จะสร้าง Service สำหรับระบบปฏิบัติการของคุณ (เช่น systemd บน Ubuntu) และแสดงคำสั่งที่คุณต้องรันต่อไป (ซึ่งมักจะต้องใช้ sudo)

  2. บันทึกรายการโพรเซสปัจจุบัน:

    หลังจากที่คุณเริ่มแอปพลิเคชันทั้งหมดที่คุณต้องการแล้ว ให้บันทึกรายการโพรเซสปัจจุบัน:

    Bash
    pm2 save
    

    เมื่อเซิร์ฟเวอร์รีบูต PM2 จะโหลดโพรเซสทั้งหมดที่คุณบันทึกไว้กลับมาโดยอัตโนมัติ

💡 สรุปขั้นตอน Production ที่สำคัญ:

  1. pm2 install -g pm2

  2. pm2 start app.js -i max --name "production-app" (เริ่มด้วยโหมด Cluster)

  3. pm2 startup (ตั้งค่าให้รันเมื่อบูต)

  4. pm2 save (บันทึกรายการโพรเซส)

No comments:

Post a Comment

Popular Posts