3
เราเข้าคิวและจัดลำดับซีเรียลอย่างถูกต้องหรือไม่?
เราประมวลผลข้อความผ่านบริการที่หลากหลาย (หนึ่งข้อความจะสัมผัสถึง 9 บริการก่อนที่จะเสร็จสิ้นแต่ละคนทำหน้าที่เฉพาะที่เกี่ยวข้องกับ IO) ตอนนี้เรามีการรวมกันของกรณีที่เลวร้ายที่สุด (อนุกรมข้อมูลสัญญา XML) และกรณีที่ดีที่สุด (MSMQ ในหน่วยความจำ) สำหรับประสิทธิภาพ ลักษณะของข้อความหมายถึงข้อมูลที่ต่อเนื่องของเราสิ้นสุดลงประมาณ 12-15 กิโลไบต์และเราประมวลผลข้อความประมาณ 4 ล้านข้อความต่อสัปดาห์ ข้อความถาวรใน MSMQ นั้นช้าเกินไปสำหรับเราและเมื่อข้อมูลเติบโตขึ้นเราก็รู้สึกกดดันจากไฟล์ที่แม็พหน่วยความจำของ MSMQ เซิร์ฟเวอร์อยู่ที่ 16GB ของการใช้หน่วยความจำและเพิ่มขึ้นเพียงเพื่อรอคิว ประสิทธิภาพยังลดลงเมื่อการใช้หน่วยความจำสูงเนื่องจากเครื่องเริ่มทำการแลกเปลี่ยน เรากำลังทำพฤติกรรมการล้างข้อมูลด้วยตนเองด้วย MSMQ ฉันรู้สึกว่ามีส่วนหนึ่งที่เราทำผิดที่นี่ ฉันพยายามใช้ RavenDB เพื่อคงข้อความไว้และเพียงรอคิวตัวระบุ แต่ประสิทธิภาพการทำงานนั้นช้ามาก (ดีที่สุด 1,000 ข้อความต่อนาทีอย่างดีที่สุด) ฉันไม่แน่ใจว่าเป็นผลมาจากการใช้รุ่นพัฒนาหรืออะไร แต่เราต้องการปริมาณงานที่สูงขึ้น [1] แนวคิดนี้ทำงานได้ดีในทางทฤษฎี แต่ประสิทธิภาพไม่ได้ขึ้นอยู่กับภารกิจ รูปแบบการใช้มีบริการหนึ่งที่ทำหน้าที่เป็นเราเตอร์ซึ่งจะอ่านทั้งหมด บริการอื่น ๆ จะแนบข้อมูลตามเบ็ดของบุคคลที่สามและส่งต่อกลับไปที่เราเตอร์ วัตถุส่วนใหญ่จะถูกสัมผัส 9-12 ครั้งแม้ว่าประมาณ 10% จะถูกบังคับให้วนรอบในระบบนี้สักครู่จนกว่าบุคคลที่สามจะตอบสนองอย่างเหมาะสม ขณะนี้บริการนี้มีบัญชีและมีพฤติกรรมการนอนหลับที่เหมาะสมเนื่องจากเราใช้ฟิลด์ลำดับความสำคัญของข้อความด้วยเหตุนี้ …