ทำไม ubuntu ถึงไม่ปล่อยหน่วยความจำ?


11

ฉันทำงานกับ apache2 + php และแอปเซิร์ฟเวอร์เว็บอื่น ๆ

ฉันมีจอมอนิเตอร์เป็นเซสชันเชื่อมต่อกับเว็บเซิร์ฟเวอร์ หน่วยความจำแรมเต็ม

แต่เมื่อตัดการเชื่อมต่อเซสชันจะไม่ทำให้หน่วยความจำ RAM ว่าง

ฉันมีการตรวจสอบผ่านfree -mและมันแสดงหน่วยความจำที่ไม่ได้เผยแพร่แม้จะไม่ได้เชื่อมต่อกับเซสชัน

มีวิธีแก้ไขไหม?


ระวังด้วยฟรี -m บรรทัดแรกแสดงการใช้หน่วยความจำรวมถึงบัฟเฟอร์และแคช บรรทัดที่สองแสดงหน่วยความจำที่ใช้น้อยบัฟเฟอร์และแคชซึ่งเป็นหน่วยความจำที่มีอยู่จริง คุณควรลองทำสิ่งที่ชอบhtopเพื่อจุดประสงค์ในการตรวจสอบ มันใช้งานง่ายกว่าและหาได้ใน repos อย่างเป็นทางการ หากคุณมีหน่วยความจำไม่เพียงพอให้ข้อมูลเพิ่มเติมกับเราเช่นประเภทของเว็บแอปพลิเคชั่นที่คุณใช้ปริมาณ RAM ที่คุณมีสิ่งที่ใช้และทั้งหมด วางเอาต์พุตของฟรี -m และสิ่งที่ต้องการ
Johnride

3
ไม่มีวิธีแก้ปัญหาเพราะไม่มีปัญหา Linux ใช้ RAM ที่มีอยู่เป็นบัฟเฟอร์สำหรับไฟล์
เรียกใช้ CMD

แต่ที่นี่หลังจากคำสั่ง fire: sudo sync && sudo sysctl -w vm.drop_caches = 3 มันแสดงให้เห็นว่าฉันมีหน่วยความจำที่ใช้ได้ฟรีและแอพทำงานได้ดีขึ้น
Tejaskumar Tank


ฉันมีประสบการณ์กับเซิร์ฟเวอร์ VPS มากที่สุดและก่อตั้งเมื่อเร็ว ๆ นี้เดเบียน 9.0 ทำงานได้อย่างสมบูรณ์แบบด้วยการจัดการหน่วยความจำ
Tejaskumar Tank

คำตอบ:


12

คุณสามารถเพิ่มหน่วยความจำที่ไม่ได้ใช้โดยใช้คำสั่งนี้:

sudo sync && sudo sysctl -w vm.drop_caches=3

คำสั่งนี้จะประสานข้อมูลในแคชแล้วเขียนพารามิเตอร์ OS ที่รันไทม์ตั้งอยู่ที่proc / พารามิเตอร์นี้ถูกอ่านโดยเคอร์เนลหนึ่งครั้งจากนั้นเพิ่มหน่วยความจำที่ไม่ได้ใช้

โดยทั่วไปเคอร์เนลจะสำรองสามส่วนไว้ในแคชซึ่งสามารถเพิ่มการใช้หน่วยความจำได้:

  • pagecache
  • dentries
  • inodes

การเขียนพารามิเตอร์นี้จะทำให้เคอร์เนลหล่นทำความสะอาด pagecache, dentries และ inodes จาก RAM ทำให้หน่วยความจำนั้นว่าง มีสามค่าที่สามารถกำหนดได้:

  1. vm.drop_caches = 1 pagecache ฟรี
  2. vm.drop_caches = 2 รายการ ฟรีและ inodes
  3. vm.drop_caches = 3 pagecache ฟรี, dentries และ inodes

สำคัญ: หลังจากการดำเนินการสิ่งนี้จะกลับสู่สถานะปกติซึ่งหมายถึงเริ่มการแคชหน้าเพจ, ทันตกรรมและ inodes อีกครั้ง ใช้ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์และแอปพลิเคชันของคุณ


1
คุณช่วยอธิบายรายละเอียดเพิ่มเติมหน่อยได้ไหม?
AB

คำสั่งนี้มีประโยชน์เฉพาะเมื่อรายสัปดาห์หรือรายวันสิ้นวันต้องการที่จะปล่อยหน่วยความจำที่ไม่ได้ใช้ทั้งหมดเช่น 3 หรือ 2 หรือ 1 ในแต่ละจุดประสงค์ที่แตกต่างกัน อย่าลองสิ่งนี้บนเซิร์ฟเวอร์ที่โหลดเซสชัน
Tejaskumar Tank

1
แก้ไขคำตอบของคุณไม่ใช่เป็นความคิดเห็น
AB

sudo sync & sudo sysctl -w vm.drop_caches=3
Nyxynyx

1
@GuillermoGarcia การใช้bashใน Ubuntu 18.04.3 ฉันต้องการที่จะรวมsudoเป็นครั้งที่สอง มิฉะนั้นฉันจะได้รับข้อผิดพลาดsysctl: permission denied on key 'vm.drop_caches'
Nyxynyx
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.