ฉันจัดการกับปัญหานี้มาหลายสัปดาห์แล้ว
ฉันมีสถานการณ์ต่อไปนี้:
Couchdb2.3.1-A <===> Couchdb2.3.1-B <===> Couchdb3.1.1-A <===> Couchdb3.1.1-B
ที่ไหน <===>
แสดงถึงการจำลองแบบดึงสองครั้ง หนึ่งรายการกำหนดค่าในแต่ละด้าน เช่น: couchdb1 ดึงมาจาก couchdb2 และ viceversa
Couchdb กำลังทำงานในคอนเทนเนอร์นักเทียบท่า
หากมีการเขียนขึ้นที่ Couchdb2.3.1-อ
มันต้องผ่านทุกเซิฟเวอร์ถึงจะมา Couchdb3.1.1-B
.
Al ของพวกเขามี HDD พิเศษ Couchdb ไม่แบ่งปันดิสก์กับบริการอื่นใด
โซฟาdb2.3.1
ก
และ ข
ไม่มีปัญหา
Couchdb3.1.1-อ
ค่อยๆ เริ่มเพิ่มเวลาแฝงของดิสก์เมื่อเวลาผ่านไป ดังนั้นเราจึงหยุดเขียนคำขอและเริ่มพูดคุยด้วยเท่านั้น Couchdb3.1.1-B
. Couchdb3.1.1-อ
ยังคงได้รับการเขียน แต่โดยโปรโตคอลการจำลองแบบเท่านั้น เวลาในการตอบสนองของดิสก์ไม่เปลี่ยนแปลง
การเปลี่ยนแปลงที่เราทำตั้งแต่เริ่มเกิดปัญหา:
- อัพเกรดเคอร์เนลจาก
4.15.0-55-ทั่วไป
ถึง 5.4.0-88-ทั่วไป
- อัพเกรดอูบุนตูจาก
18.04
ถึง 20.04
- ลบแล้ว
_global_changes
ฐานข้อมูลจาก Couchdb3.1.1-อ
ข้อมูลเพิ่มเติม:
- Couchdb กำลังใช้ docker local-perist volumes
- ดิสก์เป็น WD Purple สำหรับ
2.3.1
Couchdbs และ WD Black สำหรับ 3.1.1
ที่นอน
- เรามีฐานข้อมูลเดียวของ
88GiB
และ 2 มุมมอง: หนึ่งใน 22GB
และอีกเล็กน้อยของ 30MB
(ปรับปรุงอย่างมาก)
สถิตินักเทียบท่า
แสดงให้เห็นว่า couchdb3.1.1 ใช้หน่วยความจำจำนวนมากเมื่อเทียบกับ 2.3.1:
3.5GiB
สำหรับ couchdb3.1.1-A (ไม่ได้รับคำขอเขียนโดยตรง)
8.0GiB
สำหรับ couchdb3.1.1-A (รับทั้งคำขออ่านและเขียน)
226MiB
สำหรับ 2.3.1-A
552MiB
สำหรับ 2.3.1-B
- การบีบอัดฐานข้อมูลจะดำเนินการในเวลากลางคืน ปัญหาจะเกิดขึ้นเพียงชั่วข้ามวัน เมื่อมีการเขียนข้อมูลส่วนใหญ่
- การกำหนดค่าส่วนใหญ่เป็นค่าเริ่มต้น
กราฟเวลาแฝงจากการตรวจสอบ munin:
ความล่าช้าของดิสก์
ความช่วยเหลือใด ๆ ที่ชื่นชม