เอกสาร
เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)
ป้องกันการล่ม
บทความนี้แนะนำฟังก์ชัน «ป้องกันการล่ม» ของแผงควบคุม——มอนิเตอร์หน่วยความจำ, CPU, ดิสก์อัตโนมัติ เข้าแทรกก่อนที่ทรัพยากรของเซิร์ฟเวอร์จะหมด ป้องกันไม่ให้เซิร์ฟเวอร์ค้าง
เข้าใจในหนึ่งประโยค
สิ่งที่เซิร์ฟเวอร์กลัวที่สุดไม่ใช่ «โปรแกรมใดโปรแกรมหนึ่งรายงานข้อผิดพลาด» แต่คือ «หน่วยความจำถูกกินจนหมด / CPU วิ่งเต็ม ทั้งเครื่องค้างจน SSH ก็เชื่อมไม่ติด ต้องเข้าไปบังคับรีสตาร์ทในคอนโซลของผู้ให้บริการเท่านั้น» ป้องกันการล่มคือการจับ «โปรเซสที่กินทรัพยากร» ตัวนั้นและจัดการมันทิ้ง ก่อน ที่เรื่องนี้จะเกิดขึ้น ให้ทางรอดกับคุณ
ภาพรวมฟังก์ชัน
ป้องกันการล่มติดตั้งดีมอนแบบเบาบนเซิร์ฟเวอร์เป้าหมาย มอนิเตอร์หน่วยความจำ, CPU, ดิสก์อย่างต่อเนื่อง เมื่อทรัพยากรผิดปกติจะเข้าแทรกอัตโนมัติ (ฆ่าโปรเซสที่ผิดปกติ) ป้องกันไม่ให้เซิร์ฟเวอร์เข้าถึงไม่ได้เลยเพราะ OOM (หน่วยความจำหมด) หรือ CPU ระเบิด
ทำไมต้องใช้ (OOM / CPU ระเบิด คืออะไร)
- OOM (Out Of Memory หน่วยความจำหมด): โปรแกรมใดโปรแกรมหนึ่งมีหน่วยความจำรั่ว หรือขอหน่วยความจำมากเกินไปในครั้งเดียว จนกินหน่วยความจำของเซิร์ฟเวอร์จนหมด ตอนนี้ระบบจะเริ่ม «ฆ่าโปรเซส» เพื่อเอาตัวรอด แต่บ่อยครั้งฆ่าบริการสำคัญไปด้วย ซ้ำร้ายทั้งเครื่องอาจค้าง
- CPU ระเบิด: โปรแกรมใดโปรแกรมหนึ่งติดลูปไม่รู้จบหรือคำนวณผิดปกติ กิน CPU ทุกคอร์จนหมด ตอนนี้ SSH เชื่อมไม่ติด แผงควบคุมก็เชื่อมไม่ติด ต้องรีสตาร์ทแบบบังคับเท่านั้น
ความล้มเหลวเหล่านี้มักเกิดขึ้นทีละน้อย——เริ่มจากโปรเซสใดโปรเซสหนึ่งกินทรัพยากรช้า ๆ แล้วสุดท้ายจึงค้างสนิท บทบาทของป้องกันการล่มคือเข้าแทรกอย่างจริงจัง «ก่อนที่มันจะแก้ไขไม่ได้»
ค่าเกณฑ์การป้องกัน (ค่าเริ่มต้น)
| รายการป้องกัน | ค่าเกณฑ์เริ่มต้น | การทำงาน |
|---|---|---|
| หน่วยความจำ | หน่วยความจำที่ใช้ได้ < 8% | เข้าแทรก ฆ่าโปรเซสที่ผิดปกติซึ่งกิน > 15% (cooldown 5 นาที กันฆ่าผิดบ่อย) |
| CPU | โหลด > จำนวนคอร์ × 3 | ต้องเกินเกณฑ์ติดต่อกัน 3 ครั้งจึงลงมือ; โปรเซสเดียวต้อง > 30% จึงฆ่า |
| CPU ขั้นรุนแรง | โหลด ≥ เกณฑ์ × 4 | เข้าแทรกทันที ไม่รอการนับต่อเนื่อง (กัน CPU ระเบิดแล้วตามไม่ทัน) |
| ดิสก์ | อัตราการใช้ > 92% | แจ้งเตือนเท่านั้น (ไม่ลบไฟล์อัตโนมัติ) |
> ค่าเริ่มต้นแบบอนุรักษ์นิยมเหล่านี้ผ่านการทดสอบแล้ว เซิร์ฟเวอร์ส่วนใหญ่ใช้ได้อย่างสบายใจโดยไม่ต้องปรับ หากต้องการกำหนดเอง แก้ค่าเกณฑ์ได้ในแผงป้องกันการล่ม
สถานการณ์ที่เหมาะสม
- เซิร์ฟเวอร์รันโปรแกรมที่หน่วยความจำไม่ค่อยเสถียร (เช่นแอป Java บางตัว, สคริปต์ครอว์เลอร์)
- หน่วยความจำของเซิร์ฟเวอร์น้อยอยู่แล้ว เต็มง่าย
- อยากมี «แนวป้องกันสุดท้าย» รองรับไว้ กันค้างกลางดึกแล้วไม่มีคนดูแล
วิธีใช้งาน
1. เข้า «แผงจัดการระบบ → ป้องกันการล่ม» ของเซิร์ฟเวอร์เป้าหมาย
2. คลิก «ติดตั้งในคลิกเดียว» แผงควบคุมติดตั้งดีมอนบนเซิร์ฟเวอร์เป้าหมายผ่าน SSH
3. หลังติดตั้งจะแสดง «ดีมอนกำลังทำงาน» พร้อมอธิบายค่าเกณฑ์การป้องกันปัจจุบัน
4. เมื่อมีการป้องกันทำงาน ดูได้ใน «เหตุการณ์แจ้งเตือน»: เวลาที่เกิด, สาเหตุ (โปรเซสใด, กินทรัพยากรเท่าไร), การดำเนินการที่ทำ
วิธีติดตั้ง
- เซิร์ฟเวอร์ที่มี systemd (Debian/Ubuntu/CentOS ฯลฯ): ติดตั้งเป็นบริการ systemd เปิดเองตอนบูต + ถูกดึงกลับอัตโนมัติเมื่อล่ม (แสดงป้าย «เปิดเองตอนบูต»)
- เซิร์ฟเวอร์ที่ไม่มี systemd (Alpine ฯลฯ): ถอยกลับไปใช้วิธี
nohup(มอนิเตอร์ได้ แต่หลังรีสตาร์ทจะไม่ถูกดึงกลับอัตโนมัติ ต้องติดตั้งใหม่เอง)
ข้อควรระวัง
1. ไม่ทิ้งร่องรอย: ดีมอนเป็นสคริปต์เบาแยกต่างหาก กินทรัพยากรน้อยมาก ไม่กระทบธุรกิจของเซิร์ฟเวอร์เป้าหมาย
2. การป้องกันด้วย whitelist: เธรดเคอร์เนล, โปรเซสสำคัญของระบบจะไม่ถูกฆ่าเป็นค่าเริ่มต้น กันฆ่าผิดจนระบบล่ม
3. ดิสก์แจ้งเตือนเท่านั้น ไม่ล้าง: ดิสก์เต็มจะไม่ลบไฟล์ของคุณอัตโนมัติ (กันลบข้อมูลสำคัญผิด) แค่เตือนให้คุณจัดการเอง
4. ถอนการติดตั้ง: คลิก «ถอนการติดตั้ง» ในแผงป้องกันการล่มได้เลย จะล้างดีมอนและบริการ systemd ให้