PM2 เป็นเครื่องมือที่ใช้จัดการการเปิดเซิฟเวอร์ที่รันบน Node.js สามารถมอนิเตอร์ทรัพยากรต่างๆ บนเซิฟเวอร์ สามารถสั่งให้ทำการรีสตาร์ทเซิฟเวอร์อัตโนมัติ และสามารถปรับแต่งการทำ load balance ของเซิฟเวอร์ได้ หากยังไม่เคยใช้ลองศึกษาได้ที่ https://pm2.keymetrics.io
บล็อกนี้จะเป็นเรื่องของวิธีแก้ไขปัญหาเมื่อเกิดเหตุการณ์ไฟล์ log ของ pm2 กินพื้นที่ในเซิฟเวอร์มากเกินไป บางครั้งอาจจะใช้พื้นที่ถึง 50GB หรือ เพิ่มขนาดไฟล์ไปจนกว่าฮาร์ดดิสจะเต็มเลยก็อาจจะเป็นไปได้
ลองกดเข้าไปดูขนาดไฟล์ ในโฟลเดอร์ /log ของ pm2 กันนะครับว่า ใช้พื้นที่กันขนาดไหน โดยปกติแล้วเหตุการณ์แบบนี้จะเกิดไม่บ่อยนัก เนื่องจากว่าการเพิ่มขนาดไฟล์ของ log ใน pm2 จะค่อยๆ เพิ่มทีละนิด อาจจะใช้เวลานานเป็นปี ถึงจะสังเกตเห็นผลที่ตามมา เช่น เมื่อฮาร์ดดิสเต็มแล้ว การเพิ่มข้อมูลลงฐานข้อมูลไม่สามารถทำได้ ทำให้โปรแกรมทำงานได้ไม่สำเร็จ เป็นต้น
วิธีแก้ไขเบื้องต้น
ลบโฟล์เดอร์ logs และ ไฟล์ .pm2.log ทิ้งไปก่อน
วิธีป้องกันขนาดไฟล์ใหญ่ขึ้นในระยะยาว
ติดตั้งโปรแกรมเสริม ที่จะทำการกำหนดขนาดไฟล์ log ของ pm2 ให้ไม่เกิน 10MB ต่อไฟล์
จะทำให้ไฟล์ log แต่ละไฟล์มีขนาดไม่ใหญ่เหมือนเดิมและจะแก้ไขปัญหาของขนาดไฟล์ log กินพื้นที่ฮาร์ดดิส ได้
โปรแกรมนี้ชื่อว่า pm2-logrotate มีวิธีการติดตั้งผ่าน command line (พิมพ์ที่โฟล์เดอร์ใดก็ได้) ดังนี้
pm2 install pm2-logrotate
หรือต้องการ เปลี่ยนการกำหนดขนาดไฟล์สูงสุด จาก 10MB เป็น 10KB ก็ได้เช่นกัน
pm2 set pm2-logrotate:max_size 1K
สามารถอ่านการตั้งค่าอื่นๆ ได้ที่ https://github.com/keymetrics/pm2-logrotate
สรุป
เมื่อเราตรวจเช็คขนาดไฟล์ในเครื่องเซิฟเวอร์ของเราแล้วพบว่า ขนาดไฟล์ .pm2.log หรือ โฟลเดอร์ logs ของ pm2 นั้นใช้ขนาดพื้นที่เยอะมากผิดสังเกต ให้ทำการลบไฟล์และโฟลเดอร์นั้นออกไปก่อน แล้วจึงทำการติดตั้งโปรแกรมเสริม pm2-logrotate เพื่อเป็นการควบคุมขนาดไฟล์ log เสริมเข้าไป