ฉันมีกล่อง 8GB RAM linux ที่เซิร์ฟเวอร์ Tomcat 4 ตัวกำลังทำงานอยู่ หนึ่งในนั้นถูกตั้งค่าเป็นหน่วยความจำ 3000MB (การตั้งค่า jvm -Xms และ -Xmx) และอื่น ๆ ตั้งไว้ที่ 1500MB การสลับพาร์ติชั่นถูกตั้งค่าเป็น 8Gigs เมื่อฉันเริ่มเซิร์ฟเวอร์เหล่านี้การใช้งานไฟล์ swap จะต่ำ แต่ในช่วงเวลาหนึ่งวันและในบางช่วงเวลาที่เซิร์ฟเวอร์หนึ่ง / ทั้งหมดกำลังทำงานอยู่ในระดับสูงสุดการใช้ swap จะเริ่มเพิ่มขึ้น นี่คือเอาต์พุต sar -r ทั่วไป
kbmemfree kbmemused% memused kbbuffers kbcached kbswpfree kbswpused % swpused kbswpcad
48260 8125832 99.41 196440 2761852 7197688 1190912 14.20 316044
75504 8098588 99.08 198032 2399460 7197688 1190912 14.20 316032
มันแสดงให้เห็นถึงการแลกเปลี่ยน 14.2% ที่ใช้ในปัจจุบัน สิ่งที่ตลกคือ% นี้ไม่เคยลดลง มันยังคงเพิ่มขึ้นและเข้าถึงได้ถึง 30-40% เรารีสตาร์ทเซิร์ฟเวอร์ทุกสัปดาห์
ฉันคาดว่า% swpusedจะเพิ่มขึ้นในช่วงที่มีกิจกรรมสูงสุดและลดลงในช่วงที่มีกิจกรรมต่ำหรืออย่างน้อยก็คงที่ ดูเหมือนว่าพื้นที่สว็อปจะไม่ถูกเรียกคืนโดย OS
เอาต์พุตของฟรี: free -m รวมที่ใช้บัฟเฟอร์ที่แชร์ฟรีแคช Mem: 7982 7937 45 0 32 2088 - / + บัฟเฟอร์ / แคช: 5816 2166 Swap: 8191 1163 7028
ดังนั้นมี RAM อย่างน้อย 2 กรัม ดังนั้นคำถามคือทำไมพื้นที่สวอปเพิ่มขึ้นอย่างต่อเนื่องและไม่ถูกเรียกคืนโดยระบบปฏิบัติการ? หรือวิธีแก้จุดบกพร่องนี้เพื่อคิดออกว่าเกิดอะไรขึ้น ..