เรามีผลิตภัณฑ์ที่ใช้แอปพลิเคชันบุคคลที่สาม ซึ่งทำงานบนเซิร์ฟเวอร์ apache ที่เชื่อมต่อกับฐานข้อมูล firebird (v2.5.3)
น่าเสียดายที่เรามาถึงจุดที่เรากำลังหมดเวลาเมื่อผู้ใช้พยายามส่งคำขอไปยังเซิร์ฟเวอร์ เมื่อเปิดแท็บ devtools->network เราจะเห็นว่าแพ็กเก็ตถูกดร็อป
สำหรับการดีบักปัญหานี้ เราได้บันทึกทราฟฟิกของ Wireshark บนเซิร์ฟเวอร์ และเราเห็นเหตุการณ์การส่งสัญญาณซ้ำจำนวนมาก แพ็กเก็ต http บางแพ็กเก็ตส่งผ่านได้ แต่บางแพ็กเก็ตได้รับการส่งข้อมูลซ้ำ และฉันสงสัยว่านี่เป็นสาเหตุของการหมดเวลา
เซิร์ฟเวอร์ cpu สูง (50-100%) ส่วนใหญ่เป็นเพราะฐานข้อมูล firebird ผู้ให้บริการคลาวด์ที่โฮสต์เซิร์ฟเวอร์ไม่มีดิสก์ SSD และเราทราบดีว่านี่อาจเป็นปัญหาได้
สิ่งที่แปลกอย่างหนึ่งคือในการบันทึก wireshark เราไม่เห็นคำขอ http จากผู้ใช้ นี่คือลักษณะของแพ็กเก็ตที่ได้รับ:
เมื่อฉันพยายามตรวจจับคำขอจาก IP หนึ่งๆ ที่ล้มเหลว ฉันได้รับเพียง TCP retransmission (ดังนั้นฉันจึงไม่เห็นคำขอนั้น) ไม่แน่ใจว่ามีนัยสำคัญหรือไม่ แต่การเชื่อมต่ออยู่ที่พอร์ต 443 นี่คือตัวอย่างลักษณะที่ปรากฏ:
เป็นไปได้หรือไม่ว่าเนื่องจากฐานข้อมูล firebird ไม่ว่าง/cpu สูง แพ็กเก็ต http จึงลดลงต่ำกว่า (หลังจาก 4-5 วินาที) แม้จะไม่ได้ลงทะเบียนคำขอ http ใน wireshark
เนื่องจากเราไม่สามารถเปลี่ยนดิสก์เป็น SSD ได้ คุณคิดว่าการอัปเกรด CPU อาจช่วยแก้ปัญหานี้ได้หรือไม่
มีการกำหนดค่า apache หรือ firebird ที่อาจปรับปรุงประสิทธิภาพหรือไม่
ข้อมูลอื่นใดที่ฉันสามารถพยายามรวบรวมเพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหา