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