ในบางครั้งเซิร์ฟเวอร์ "ของฉัน" จะหยุดทำงานเนื่องจากหน่วยความจำและพื้นที่สว็อปหมด (มันยังคงตอบสนองต่อ ping แต่ไม่มีอะไรมากไปกว่านั้นไม่ใช่แม้แต่ ssh)
ฉันบอกว่า linux ทำ overcommitment หน่วยความจำซึ่งเท่าที่ฉันเข้าใจเหมือนกับธนาคารใช้เงิน: มันให้การประมวลผลหน่วยความจำมากกว่าที่มีจริงโดยสมมติว่ากระบวนการส่วนใหญ่จะไม่ใช้หน่วยความจำทั้งหมดที่พวกเขาถาม อย่างน้อยก็ไม่ได้ทั้งหมดในเวลาเดียวกัน
โปรดสมมติว่านี่เป็นสาเหตุที่ทำให้ระบบของฉันหยุดทำงานเป็นบางครั้งเราจะไม่พูดถึงที่นี่ว่าเป็นกรณีนี้หรือไม่ (ดูสิ่งที่ทำให้บริการทั้งหมดบนเซิร์ฟเวอร์ล่ม แต่ยังตอบสนองต่อการปิง ) .
ดังนั้น,
ฉันจะปิดการใช้งานหรือลดหน่วยความจำ overcommitment อย่างมากใน CentOS ได้อย่างไร ฉันได้อ่านมีการตั้งค่าสองอย่างที่เรียกว่า vm.overcommit_memory (ค่า 0, 1, หรือ 2) และ vm.overcommit_ratiom แต่ฉันไม่มีความคิดว่าฉันต้องค้นหาและเปลี่ยน (ไฟล์การกำหนดค่าบางอย่างหวังว่า) และฉันต้องรีบูตเซิร์ฟเวอร์เพื่อให้การเปลี่ยนแปลงมีผล
และปลอดภัยหรือไม่ ฉันคาดหวังผลข้างเคียงอะไรบ้าง เมื่อ googling สำหรับ overcommit_memory ฉันพบสิ่งที่น่ากลัวอย่างที่คนบอกว่าเซิร์ฟเวอร์ไม่สามารถบู๊ตได้อีกต่อไป ....
เนื่องจากสิ่งที่ทำให้การใช้หน่วยความจำเพิ่มขึ้นอย่างฉับพลันคือ mysql เนื่องจากการสอบถามที่ทำโดย php ซึ่งจะถูกเรียกในขณะที่ให้บริการการร้องขอ HTTP ฉันคาดหวังว่าสคริปต์ php บางตัวจะไม่สมบูรณ์และบางครั้งการตอบสนอง 500 ครั้ง เซิร์ฟเวอร์ไม่ว่างซึ่งเป็นความเสี่ยงที่ฉันสามารถทำได้ (ดีกว่าแน่นอนว่าเซิร์ฟเวอร์ทั้งหมดไม่สามารถเข้าถึงได้และต้องรีบูตอย่างหนัก)
หรืออาจเป็นสาเหตุให้เซิร์ฟเวอร์ของฉันไม่สามารถรีบูทได้หากฉันเลือกการตั้งค่าที่ผิด?