Score:0

Windows Docker เชื่อมต่อซ็อกเก็ตช้า

ธง cn

ฉันมีคอนเทนเนอร์นักเทียบท่าสองคอนเทนเนอร์ที่พยายามคุยกับอีกคอนเทนเนอร์หนึ่งโดยใช้คำขอเว็บ แต่ประสบปัญหาเวลาแฝงแบบสุ่ม ในขณะที่ทำการดีบั๊ก ฉันได้แบ่งปัญหาออกเป็นเวลาในการเชื่อมต่อซ็อกเก็ตที่ช้า โดยเรียกใช้เซิร์ฟเวอร์ซ็อกเก็ตอย่างง่ายในเครื่องเดียว

ซ็อกเก็ตนำเข้า
เซิร์ฟเวอร์ซ็อกเก็ต = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('0.0.0.0', 80))
serversocket.listen(5)
ในขณะที่ทรู:
    (clientsocket ที่อยู่) = serversocket.accept()
    พิมพ์ ((clientsocket, ที่อยู่))
    clientsocket.shutdown(ซ็อกเก็ต.SHUT_RDWR)
    clientsocket.close()

และผูกซ้ำกับอีกอันหนึ่งโดยพิมพ์ว่าใช้เวลานานเท่าใดในการเชื่อมต่อ

ซ็อกเก็ตนำเข้า
a=time.time()
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("คอนเทนเนอร์อื่น", 80))
พิมพ์ (time.time () - ก)

สิ่งที่ฉันเห็นคือเวลาการเชื่อมต่อเช่น:
0.0009965896606445312
0.0010194778442382812
0.0009961128234863281
0.0009963512420654297
0.0010194778442382812
0.0010199546813964844
3.0038609504699707
0.0005102157592773438

สิ่งที่น่าสนใจคือ ถ้าฉันใช้ไคลเอนต์ 2 เครื่องและเชื่อมต่อกับเครื่องหนึ่งซ้ำๆ จนกระทั่งพบความล่าช้าลึกลับนี้ จากนั้นสลับไปยังอีกเครื่องหนึ่งทันที เครื่องจะสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้ (หลายครั้งด้วยซ้ำ) ในขณะที่อีกเครื่องยังคงถูกบล็อก พยายาม เพื่อเชื่อมต่อ

ข้อมูลเฉพาะบางประการเกี่ยวกับสถาปัตยกรรม โฮสต์ทั้งสองเป็นคอนเทนเนอร์ Windows ที่ทำงานใน docker EE โดยใช้เครือข่าย docker NAT ที่เป็นค่าเริ่มต้น ควรระบุว่าฉันเห็นเวลาแฝงเหล่านี้แม้ว่าจะเชื่อมต่อโดยใช้ที่อยู่ IP โดยตรง (ไม่มี DNS)

สำหรับสิ่งที่คุ้มค่า ฉันยังพบปัญหานี้โดยใช้ Apache เพื่อย้อนกลับคำขอเว็บพร็อกซีจากที่หนึ่งไปยังอีกที่หนึ่ง โดยที่คำขอส่วนใหญ่ดำเนินการเสร็จสิ้นทันที ในขณะที่คำขออื่นๆ หยุดทำงานเป็นเวลาไม่กี่วินาที (ปัญหาดั้งเดิมของฉัน)

แก้ไข: นอกจากนี้ในการทดสอบของฉัน ฉันได้ยืนยันด้วยว่าปัญหายังมีอยู่หากฉันรันไคลเอ็นต์ทดสอบซ็อกเก็ตขนาดเล็กของฉันจากโฮสต์ เชื่อมต่อกับเซิร์ฟเวอร์ซ็อกเก็ตที่ทำงานในคอนเทนเนอร์ เช่นเดียวกับในทางกลับกัน (เซิร์ฟเวอร์บนโฮสต์และไคลเอนต์ในคอนเทนเนอร์ )

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา