Puncte:0

Conectare lentă a soclului Windows Docker

drapel cn

Am două containere docker care încearcă să vorbească cu altul folosind solicitări web, dar se confruntă cu o latență aleatorie. În timpul depanării, am defalcat problema în timpii de conexiune la socket lenți, rulând un simplu server de socket într-unul.

priză de import
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('0.0.0.0', 80))
serversocket.listen(5)
în timp ce este adevărat:
    (clientsocket, adresa) = serversocket.accept()
    print((socket client, adresa))
    clientsocket.shutdown(socket.SHUT_RDWR)
    clientsocket.close()

și se leagă în mod repetat la acesta de la celălalt, imprimând cât timp durează conectarea

priză de import
a=time.time()
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((„altul-container”, 80))
print(time.time() - a)

Ceea ce văd sunt momente de conectare ca:
0.0009965896606445312
0.0010194778442382812
0.0009961128234863281
0.0009963512420654297
0.0010194778442382812
0.0010199546813964844
3.0038609504699707
0.0005102157592773438

Ce este interesant, este că dacă folosesc 2 clienți și mă conectez în mod repetat cu unul până când experimentează această latență misterioasă, apoi trec imediat la celălalt, se poate conecta la server (chiar de mai multe ori) în timp ce celălalt este încă blocat, încercând a conecta.

Câteva detalii despre arhitectură, ambele gazde sunt containere Windows care rulează în docker EE folosind rețeaua docker NAT implicită. De asemenea, merită să precizez că văd aceste latențe, chiar și atunci când mă conectez folosind adrese IP directe (fără DNS)

Pentru ceea ce merită, văd și această problemă folosind Apache pentru a inversa solicitările web proxy de la una la alta, unde majoritatea solicitărilor se completează instantaneu, în timp ce altele se blochează pentru câteva secunde (problema mea originală)

Editați | ×: În continuare, în timpul testării mele, am confirmat că problema există și dacă rulez micul meu client de testare a socketului de la gazdă, conectându-mă la serverul de socket care rulează în container, precum și invers (server pe gazdă și client în container). )

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.