เอกสาร

เริ่มต้นอย่างรวดเร็ว + คำอธิบายฟังก์ชันของแต่ละส่วนและแต่ละอุปกรณ์ (อัปเดตต่อเนื่อง)

ป้องกันการล่ม

บทความนี้แนะนำฟังก์ชัน «ป้องกันการล่ม» ของแผงควบคุม——มอนิเตอร์หน่วยความจำ, 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 ให้