ฉันได้รับรายงานจากผู้ใช้ Redis และฉันไม่แน่ใจว่าจะตอบอย่างไรเนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญในพื้นที่ของ Linux และตัวกำหนดตารางเวลาอย่างไรก็ตามเรา (ในฐานะโครงการ Redis) จำเป็นต้องคิดประเด็นนี้โดยเฉพาะ ในอนาคตเช่นเดียวกับ Redis Cluster เราจะมีอินสแตนซ์ Redis จำนวนมากที่ทำงานพร้อมกันในกล่องเดียว ดังนั้นฉันขอความช่วยเหลือที่นี่
ปัญหา:
- เคอร์เนล: "Linux redis1 2.6.32-305-ec2 # 9-Ubuntu SMP พฤ. 15 เม.ย. 08:05:38 UTC 2010 x86_64 GNU / Linux"
- RAM ว่างจำนวนมากไม่มีกระบวนการอื่นที่ทำ I / O อย่างมีนัยสำคัญ
- สิ่งสำคัญทำงานบนอินสแตนซ์ขนาดใหญ่ EC2 ไม่ใช่เซิร์ฟเวอร์จริง ฉันไม่เคยเห็นอะไรแบบนี้มาก่อนในสภาพแวดล้อมที่ไม่มีการจำลองเสมือน อินสแตนซ์ EC2 คือ: "สูงหน่วยความจำขนาดใหญ่พิเศษอินสแตนซ์ 17.1 GB หน่วยความจำ 6.5 ECU (2 แกนเสมือนกับ 3.25 EC2 Compute หน่วยในแต่ละ), 420 GB ของการจัดเก็บเช่นแพลตฟอร์ม 64 บิตท้องถิ่น"
โดยทั่วไปเมื่อคุณรีสตาร์ทอินสแตนซ์ Redis ขนาดใหญ่ระบบจะทำงานช้าคุณจึงไม่สามารถพิมพ์บนเชลล์ได้อีกต่อไป เมื่อ Redis โหลดอินสแตนซ์จะใช้ CPU 100% (โหลดข้อมูลเร็วที่สุดเท่าที่จะทำได้) และอ่านไฟล์ dump.rdb ตามลำดับ I / O ไม่สูงโดยเฉพาะอย่างยิ่งการโหลดเป็น CPU-bound ไม่ I / O ที่ถูกผูกไว้
ทำไมในโลกถึงมีกล่องที่มีสองซีพียูและ RAM มากมายไม่มีการสับเปลี่ยนสิ่งใดบนดิสก์โดยทั่วไปควรหยุดทำงานกับภาระงานนี้หรือไม่
ฉันรู้สึกว่ามันมีส่วนเกี่ยวข้องกับความจริงที่ว่ามันเป็นอินสแตนซ์ EC2 ดังนั้นเกี่ยวข้องกับเทคโนโลยีการจำลองเสมือนที่ใช้ขณะที่ฉันโหลดชุดข้อมูล Redis 24 GBในกล่องของฉันตลอดเวลาโดยไม่มีปัญหาใด ๆ (แม้แต่อินสแตนซ์อื่นของ Redis วิ่งด้วยโหลดสูง)
ขอบคุณสำหรับคำใบ้ใด ๆ !
Salvatore
แก้ไข : เพิ่มข้อเสนอแนะบางอย่างที่ฉันได้รับจาก twitter:
จาก @ezmobius: @antirez สิ่งแรกที่ต้องทำคือลองจาก / mnt หรือไดรฟ์ ephemeral ในพื้นที่เพื่อดูว่า EBS ของมันเกิดความสะเพร่าหรือไม่ 2 คือเพื่อให้แน่ใจว่าไม่ใช่ "โทษขั้นแรก" (google it) และหากเป็นเช่นนั้น คุณต้อง dd 0 ข้ามดิสก์ก่อน
จาก @dvirsky: @antirez ฉันกำลังเรียกใช้อินสแตนซ์ redis จำนวนมากบนโหนด ec2 เช่นนั้น ฉันสังเกตเห็นการชะลอตัวของ bgsave แต่ไม่ใช่ปรากฏการณ์นี้