ฉันกำลังดูแลเซิร์ฟเวอร์ Debian Linux x86_64 ที่มี RAM ขนาด 125GB, พาร์ติชั่นสว็อป 10GB และค่า Swapness เท่ากับ 60
ก ฟรี -gw
พิมพ์ผลลัพธ์:
แคชบัฟเฟอร์ที่ใช้ร่วมกันทั้งหมดที่ใช้ฟรี
เบอร์: 125 20 1 25 0 103 78
สลับ: 9 1 7
ทุกคืน งาน cron จะทำงานโดยใช้ดิสก์ R/W มาก และเพิ่มหน่วยความจำที่ใช้ไป 2GB ในระหว่างการดำเนินการก่อนจะคืนค่าเป็น ~20GB
ในกรอบเวลาเดียวกัน กระบวนการ Python ที่บรรจุในคอนเทนเนอร์ที่ใช้เวลานาน (โดยเฉพาะ gunicorn) จะถูกเพจเอาต์
เมื่อเวลาผ่านไป กระบวนการเหล่านั้นจะค่อยๆ เติมเต็มการแลกเปลี่ยน - หลังจากผ่านไปสองสามสัปดาห์ การแลกเปลี่ยนจะเต็ม 99%
ฉันสามารถล้างการแลกเปลี่ยนได้โดยการรีสตาร์ทกระบวนการหรือปิดใช้งานและเปิดใช้งานอีกครั้งด้วย เปลี่ยน
และ เปลี่ยน
. แต่การใช้ swap ของกระบวนการ Python จะค่อย ๆ คืบคลานอีกครั้ง
ฉันเดาว่าส่วนหนึ่งของคำอธิบายอาจเป็นเพราะงาน cron ทุกคืน Kernel จึงจัดลำดับความสำคัญของแคชระบบไฟล์ให้สูงกว่ากระบวนการ Python แต่ฉันเดาด้วยว่าข้อผิดพลาดของซอฟต์แวร์บางอย่างในการจัดการหน่วยความจำของกระบวนการ Python เหล่านั้นอาจถูกตำหนิ
เพื่อนแนะนำให้ฉันซื้อ RAM เพิ่ม เพื่อให้มีที่ว่างมากขึ้นสำหรับแคชของระบบไฟล์ นั่นดูเหมือนมากเกินไปสำหรับฉัน ฉันต้องการวินิจฉัยสาเหตุของการแลกเปลี่ยนที่แม่นยำยิ่งขึ้นและค้นหาวิธีแก้ปัญหาซอฟต์แวร์บางอย่าง
ตอนนี้ฉันส่งคำถามไปยัง Serverfault - คุณคิดอย่างไรกับปรากฏการณ์นี้ และฉันควรไปที่ไหนจากที่นี่