https://gemini.google.com/share/e70b6bf55e75
PM2 เป็นตัวจัดการโพรเซส (Process Manager) สำหรับ Node.js ที่มีประสิทธิภาพและนิยมใช้ในการนำแอปพลิเคชัน Node.js ไปใช้งานจริง (Production) บนเซิร์ฟเวอร์ มันช่วยให้แอปพลิเคชันของคุณทำงานได้อย่างต่อเนื่องตลอดเวลา (always-on), จัดการการโหลดบาลานซ์ (Load Balancing), และดูแลการรีสตาร์ทอัตโนมัติเมื่อเกิดข้อผิดพลาด
นี่คือวิธีการใช้งาน PM2 ตั้งแต่การติดตั้งไปจนถึงการใช้งานเบื้องต้น:
1. การติดตั้ง PM2
ติดตั้ง PM2 แบบ Global บนเซิร์ฟเวอร์ของคุณ เพื่อให้สามารถเรียกใช้คำสั่งได้จากทุกที่:
2. การเริ่มโปรเจกต์ (Start Your Project)
มีหลายวิธีในการเริ่มต้นโปรเจกต์ด้วย PM2:
A. เริ่มต้นง่าย ๆ (Simple Start)
รันไฟล์หลักของแอปพลิเคชันของคุณ (สมมติว่าเป็น index.js หรือ app.js):
B. ตั้งชื่อและเพิ่มพารามิเตอร์
คุณสามารถตั้งชื่อโพรเซสเพื่อระบุได้ง่ายขึ้น และตั้งค่าให้รีสตาร์ทอัตโนมัติเมื่อไฟล์มีการเปลี่ยนแปลง (สำหรับ Development/Testing):
C. โหมด Cluster (Load Balancing)
PM2 สามารถสร้างโพรเซสย่อย (Worker Processes) หลายตัวเพื่อใช้ประโยชน์จาก CPU หลายคอร์บนเซิร์ฟเวอร์ของคุณ ซึ่งช่วยเพิ่มประสิทธิภาพและรองรับการโหลดบาลานซ์:
PM2 จะดูแลการกระจายคำขอ (Load Balancing) ไปยังโพรเซสย่อยทั้งหมดให้คุณโดยอัตโนมัติ
3. การจัดการสถานะ (Process Management)
นี่คือคำสั่งพื้นฐานในการควบคุมโพรเซสที่คุณรันอยู่:
| คำสั่ง (Command) | คำอธิบาย (Description) |
pm2 status หรือ pm2 ls | แสดงรายการโพรเซสทั้งหมดที่รันอยู่พร้อมสถานะ |
| `pm2 stop <name | id>` |
| `pm2 restart <name | id>` |
| `pm2 delete <name | id>` |
pm2 stop all | หยุดโพรเซสทั้งหมด |
pm2 kill | ฆ่าโพรเซส Demon (โพรเซสหลักของ PM2) |
4. การจัดการ Log และ Monitoring
A. ดู Log แบบ Real-time
ใช้คำสั่งนี้เพื่อดู Log ทั้งหมดจากโพรเซสของคุณในหน้าจอเดียว:
B. ดูสถานะทรัพยากร (Monitoring)
PM2 มีแดชบอร์ดใน Terminal ที่ช่วยให้คุณติดตามสถานะ CPU, Memory, และ Request Per Minute ได้แบบเรียลไทม์:
5. การตั้งค่าให้รันอัตโนมัติเมื่อรีบูต (Startup/Daemon)
สิ่งสำคัญใน Production คือการทำให้ PM2 และแอปพลิเคชันของคุณกลับมาทำงานได้ทันทีหลังจากที่เซิร์ฟเวอร์รีบูต:
สร้าง Startup Script:
คำสั่งนี้จะสร้าง Service สำหรับระบบปฏิบัติการของคุณ (เช่น systemd บน Ubuntu) และแสดงคำสั่งที่คุณต้องรันต่อไป (ซึ่งมักจะต้องใช้ sudo)
บันทึกรายการโพรเซสปัจจุบัน:
หลังจากที่คุณเริ่มแอปพลิเคชันทั้งหมดที่คุณต้องการแล้ว ให้บันทึกรายการโพรเซสปัจจุบัน:
เมื่อเซิร์ฟเวอร์รีบูต PM2 จะโหลดโพรเซสทั้งหมดที่คุณบันทึกไว้กลับมาโดยอัตโนมัติ
💡 สรุปขั้นตอน Production ที่สำคัญ:
pm2 install -g pm2
pm2 start app.js -i max --name "production-app" (เริ่มด้วยโหมด Cluster)
pm2 startup (ตั้งค่าให้รันเมื่อบูต)
pm2 save (บันทึกรายการโพรเซส)