การทำงานtop
ในโหมดแบทช์เพื่อรายงานขนาดหน่วยความจำเป็นระยะสามารถใช้เพื่อดูว่าใครกำลังใช้หน่วยความจำเมื่อสิ่งต่าง ๆ ลงไปทางใต้ การรันsar
ในโหมดแบตช์ควรให้การวินิจฉัยที่ดีเกี่ยวกับการใช้หน่วยความจำและ I / O ที่เกี่ยวข้อง การวิ่งmunin
เพื่อตรวจสอบระบบควรให้กราฟกับรายละเอียดที่ดีเกี่ยวกับการใช้หน่วยความจำ สิ่งนี้อาจช่วยได้มาก
คุณสามารถใช้ limits.conf เพื่อ จำกัด ขนาดแกนหลักสูงสุดของโปรแกรม การตั้งค่าอย่างถูกต้องนี้ควรฆ่าโปรแกรมใด ๆ ที่หน่วยความจำรั่ว สิ่งนี้ใช้ได้กับโมดูล pam_limits ข้อ จำกัด ยังสามารถตั้งค่าได้ด้วยulimits
คำสั่ง
คุณกำลังเรียกใช้โปรแกรมบางโปรแกรมซึ่งอาจใช้หน่วยความจำจำนวนมาก บางสิ่งที่คุณสามารถดูได้รวมถึง
- แอปพลิเคชันที่ตั้งโปรแกรมไม่ดีที่ทำงานภายใต้
apache2
อาจทำให้หน่วยความจำรั่ว คุณจะเห็นขนาดหน่วยความจำเพิ่มขึ้นเมื่อสิ่งนี้เกิดขึ้น คุณสามารถปรับแต่ง apache2 เพื่อรีไซเคิลเด็ก ๆ หลังจากใช้งานไปตามจำนวนที่กำหนดโดยตั้งค่าMaxRequestsPerChild
เป็น 100 หรือมากกว่านั้น หากวิธีนี้ช่วยแก้ไขปัญหาได้คุณต้องแก้ไขปัญหาการรั่วไหล ฉันจะดูมันก่อน
- MySQL อาจพยายามโหลดข้อมูลลงในหน่วยความจำ หากคุณมีข้อมูลจำนวนมากในหน่วยความจำสิ่งนี้อาจทำให้เกิดการฟาดฟันบางอย่าง แต่ไม่ควรเร้าใจอย่างที่เห็น
- หากคุณ
tmpfs
ติดตั้งระบบไฟล์ขนาดใหญ่คุณอาจทำให้หน่วยความจำรั่วหากไฟล์ไม่ถูกลบเมื่อใช้ ไฟล์ขนาดใหญ่ที่มีอายุการใช้งานยาวนานอาจเป็นปัญหาได้เช่นกัน
- หากปัญหาเกิดขึ้นในเวลาประมาณเดียวกันของวันคุณอาจมีโปรแกรมที่กำหนดไว้ซึ่งหน่วยความจำรั่ว
- หากคุณมีโปรแกรมที่จัดสรรหน่วยความจำที่ใช้ร่วมกัน แต่ไม่ได้ปล่อยออกมาก่อนที่จะออกคุณจะมีหน่วยความจำรั่วที่มองไม่เห็น หากหน่วยความจำที่ใช้ร่วมกันถูกล็อคในหน่วยความจำก็อาจบังคับให้แลกเปลี่ยน จำนวนหน่วยความจำที่ใช้ร่วมกันที่มีอยู่นั้นค่อนข้าง จำกัด
- ชุด liquidsoap + icecast อาจพบปัญหาการบัฟเฟอร์ที่ใช้หน่วยความจำ ฉันไม่ได้ใช้ชุดค่าผสมนี้ดังนั้นฉันไม่แน่ใจว่าสิ่งนี้จะปรากฏขึ้นได้อย่างไร
การใช้งานหน่วยความจำปกติ: หน่วยความจำฟรีไม่ใช่สิ่งที่คุณต้องการมาก หากระบบของคุณใช้งานมานานและมีหน่วยความจำว่างมากมายเกิดอะไรขึ้น ทุกครั้งที่คุณอ่านหรือเขียนไฟล์บล็อกจะเข้าสู่แคชบัฟเฟอร์ วิธีนี้จะลดหน่วยความจำว่างของคุณและเป็นสิ่งที่ดี ระบบจะให้พื้นที่ว่างเพียงพอสำหรับเริ่มโปรแกรมบางโปรแกรมโดยไม่ต้องค้นหาหน่วยความจำที่อื่น เนื่องจากโปรแกรมจำนวนมากทำงานได้อย่างรวดเร็วหน่วยความจำของพวกเขาจะถูกส่งกลับไปยังกลุ่มที่ว่างเมื่อหยุดทำงาน
เมื่อคุณอ่านไฟล์ที่อยู่ในบัฟเฟอร์แคชไม่จำเป็นต้องเข้าถึงดิสก์และการอ่านถูกแก้ไขจากบัฟเฟอร์แคช Writes ใช้กลไกที่คล้ายกัน หากระบบของคุณต้องการหน่วยความจำแคชบัฟเฟอร์เป็นหนึ่งในสถานที่แรกที่ใช้ บัฟเฟอร์ส่วนใหญ่สามารถเปิดใช้งานได้ทันที
หากคุณมีหน่วยความจำรั่วคุณจะเห็นหน่วยความจำว่างและบัฟเฟอร์ทั้งคู่เริ่มหดตัว นี่ยังไม่เป็นปัญหาที่รุนแรงนักเนื่องจากหน่วยความจำรั่วในที่สุดควรถูกย้ายไปยังพื้นที่สว็อป ระบบของคุณจะยังทำงานได้ดีจนกว่าคุณจะเติมพื้นที่สว็อปและดึงพื้นที่ว่างที่เหลือไปยังจุดที่โปรแกรมไม่สามารถเริ่มต้นได้ เป็นเรื่องปกติที่อาจมีการใช้พื้นที่สว็อปเล็กน้อย