ฉันได้ตั้งค่าช่องสัญญาณระหว่างเซิร์ฟเวอร์สองเครื่องสำเร็จแล้ว เช่น การเชื่อมต่อขาเข้าที่พอร์ต 80/443 จะถูกส่งต่อไปยังเซิร์ฟเวอร์อื่นที่ใช้งานเว็บเซิร์ฟเวอร์จริง นอกจากนี้ ฉันใช้ autossh เพื่อรักษาการเชื่อมต่อ
วิธีนี้ใช้งานได้ดี ยกเว้นว่าแทนที่จะปิดอย่างสมบูรณ์ การเชื่อมต่อขาเข้าจำนวนมากจะจบลงในสถานะ FIN_WAIT2:
ตัวอย่างเอาต์พุต netstat
..และเนื่องจากสิ่งเหล่านี้เชื่อมโยงกับกระบวนการที่กำลังทำงานอยู่ ระบบจึงไม่เคยล้างข้อมูลเหล่านี้ ในที่สุด ฉันถึงขีดจำกัดการเปิดไฟล์ ส่งผลให้ไคลเอนต์ SSH ไม่ยอมรับการเชื่อมต่อใหม่ ปัญหาคือฉันไม่สามารถเข้าใจได้ว่าเหตุใดสิ่งนี้จึงเกิดขึ้น การเชื่อมต่อขาเข้าจำนวนมากปิดสนิท แต่การเชื่อมต่ออื่น ๆ ยังคงมีอยู่ไม่สิ้นสุด
สิ่งที่ฉันได้ลอง:
ปิดการใช้งาน ServerAliveInterval/CountMax, ClientAliveInterval/CountMax และ TCPkeepAlive
เริ่มบริการใหม่ (ใช้งานได้ แต่ไม่ใช่วิธีแก้ปัญหาจริงๆ)
การค้นคว้าที่ฉันทำเกี่ยวกับสิ่งนี้ทำให้ฉันได้รับแหล่งข้อมูลน้อยมาก เช่น
คำถามนี้เกี่ยวกับข้อผิดพลาดของเซิร์ฟเวอร์ซึ่งยังไม่ได้เสนอวิธีแก้ปัญหาใดๆ
ฉันไม่เข้าใจว่าการเชื่อมต่อที่ไม่คงอยู่และไคลเอนต์ที่ตัดการเชื่อมต่อยังคงทำงานอยู่ได้อย่างไร ใครช่วยส่องแสงได้บ้าง?