ฉันรู้ว่ามันทำอะไร ... ฉันคิดว่าฉันสงสัยว่าทำไมมันถึงแก้ไขปัญหาในแอปพลิเคชันที่ฉันได้รับมา ฉันใช้แอพพลิเคชั่น Tomcat ที่มีขนาดใหญ่พอสมควรซึ่งทำหน้าที่เป็นเซิร์ฟเวอร์ Red5 สำหรับไคลเอนต์ที่มีความยืดหยุ่นและจัดการกับข้อมูลการโต้ตอบแบบเรียลไทม์จำนวนมาก ปัญหาอยู่ภายใต้การโหลดจำนวนมากเมื่อเวลาผ่านไปการตอบสนองต่อลูกค้าเหล่านี้เพิ่มขึ้นเป็น 3-400 มิลลิวินาทีโดยปกติจะน้อยกว่า 100 มิลลิวินาที ลูกค้าสงสัยว่าเป็นปัญหาหน่วยความจำซึ่งเราไม่สามารถยืนยันได้จริงๆ อยู่มาวันหนึ่งเซิร์ฟเวอร์จัดเตรียมที่ฉันเรียกใช้การทดสอบโหลดโดยพื้นฐานหยุดการรับคำร้องขอหรือช้ามาก ในสิ่งที่ฉันส่ง
sync && echo 3 > /proc/sys/vm/drop_caches
และเซิร์ฟเวอร์กลับมามีชีวิตอย่างน่าอัศจรรย์และเริ่มทำงานด้วยความเร็วสูงสุดที่ให้การเชื่อมต่อเหล่านี้หมด นี่เป็นเรื่องบังเอิญหรือพฤติกรรมนี้มีเหตุผลและทำไม
sync
echo
จากนั้นลองคิดดูว่าทำไมเซิร์ฟเวอร์ถึงช้าในกรณีที่การแก้ไขนี้ (CPU สูงสุดหรือไม่ IO สูงสุดหรือไม่เป็นเพจจิ้งของระบบหรือไม่)