Puncte:-1

Prea multe conexiuni RPC fac socket-ul web închis

drapel mx

Mai multe servere sunt conectate prin RPC. Există momente în care aplicațiile din sistemul de operare au prea multe apeluri RPC, ceea ce face ca rețeaua să se închidă. Care este cel mai bun mod de a-mi depana sau configura sistemul de operare?

"msg":"trimiterea mesajului ping: scrieți tcp 127.0.0.1:36802->127.0.0.1:1234: folosirea conexiunii de rețea închisă"
"msg":"handle me:write tcp4 127.0.0.1:1234->127.0.0.1:56244: write: broken pipe"
Doug avatar
drapel in
Cereți un răspuns precis și detaliat, dar oferiți foarte puține detalii pentru întrebare. gRPC este utilizat în general în dezvoltarea de aplicații, așa că întrebarea ar trebui să fie mutată în Stack Overflow.
Shervin Ivari avatar
drapel mx
Solicitarea @Doug RPC este ceva general, dar poate că unele limitări ale protocolului TCP sunt cauza. Programul imi da erori. Când monitorizez resursele, totul pare în regulă și cred că este o problemă cu sistemul de operare. Dacă găsesc jurnale utile pe partea sistemului de operare, vă rugăm să-mi indicați
Doug avatar
drapel in
Da, este ceva general, de aceea trebuie să fii specific. Ai etichetat RPC și gRPC, deci pe care îl folosește programul? Este acest program ceva obișnuit pentru care este disponibil codul sursă sau dezvoltat intern? La ce resurse v-ați uitat, de exemplu, ce arată netstat în momentul unei erori? Fără câteva informații de continuat, pot doar să ofer presupunerea mea că aceasta este o aplicație gRPC personalizată prost scrisă, care trebuie modificată pentru a utiliza canalele în mod corespunzător. Mă gândesc la mai multe alte soluții, dar fără informații nu pot alege pe care să ți-o dau.
Puncte:0
drapel in

Nu menționați ce depanare ați făcut pentru a ajunge la concluzia că acest lucru se datorează prea multor apeluri RPC sau orice detalii despre starea conexiunilor de rețea în punctul de defecțiune. Presupun că această eroare provine din epuizarea portului din cauza lipsei de pooling de conexiuni.

Pentru a verifica dacă porturile sunt epuizate, utilizați netstat pentru a obține starea porturilor de pe server. Dacă există un număr excesiv de porturi listate, probabil că aveți o problemă de epuizare a portului.

gRPC reunește automat conexiunile, cu toate acestea, codul scris prost poate împiedica funcționarea corectă a acestui lucru prin crearea excesivă de noi canale gRPC în loc de a le reutiliza pe cele existente. Am făcut referire la documentația Microsoft, deoarece are o descriere a modului în care crearea de noi canale duce la crearea unei noi conexiuni HTTP/2.

Pentru a corecta acest lucru, va trebui să vă evaluați codul și să-l modificați pentru a reutiliza canalele în mod mai adecvat.

Cele mai bune practici de performanță cu gRPC

Un canal gRPC ar trebui reutilizat atunci când efectuați apeluri gRPC. Reutilizarea unui canal permite multiplexarea apelurilor printr-o conexiune HTTP/2 existentă.

Dacă este creat un nou canal pentru fiecare apel gRPC, timpul necesar pentru finalizare poate crește semnificativ. Fiecare apel va necesita mai multe călătorii dus-întors în rețea între client și server pentru a crea o nouă conexiune HTTP/2:

Cele mai bune practici de performanță

Reutilizați întotdeauna cioturile și canalele atunci când este posibil.

În timp ce faceți acest lucru, puteți lua în considerare socketurile de domeniu Unix mai degrabă decât socketurile TCP. Dacă aceste aplicații vor funcționa în cele din urmă distribuite pe mai multe mașini, ar trebui să rămâneți la socket-urile TCP. Dacă vor rula întotdeauna pe aceeași mașină, ar trebui să luați în considerare socketurile de domeniu Unix.

Cum se creează un serviciu GRPC pe o priză locală, mai degrabă decât inet în scala/java

Server gRPC în Python cu socket de domeniu Unix

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.