javascript - Hvordan kan Monitor Interval påvirke Network Traffic ~ .1 [[GB/s]] i ZeroMQ?

Indlæg af Hanne Mølgaard Plasc

Problem



Så jeg har en proces, der styrer en flok arbejdere, der bruger en REQ/REP og et PUB/SUB -mønster for hver arbejdstagerbi. Jeg indstiller monitorintervallet til 250 [ms] og alle har arbejdet fint.


Når jeg installerer på en Windows-server og starter ressourceovervågningen, er mængden af ​​netværkstrafik (bytes skrevet) ved denne knudeproces op over 64-100 [MB/s] , og det inkluderer ikke nogen reel ansøgningstransaktioner endnu, fordi trafikken er der, om jeg starter børnene eller ej, og det går ikke, når børnene kommer online.


Mistænker den intervalindstilling, jeg spillede med at øge værdien, og bemærk at højere intervalværdier (mindre ofte) fører til et fald i trafikken, men omkostningerne ved det er det, der tager lang tid at opdage forbindelses-/afbrydelsesbegivenheder.


Nu har jeg ikke forsøgt at indsnævre det endnu, om det faktisk er REQ/REP -mønsteret eller PUB/SUB -mønsteret, der er problemet, men jeg er nysgerrig, hvilken del af dokumentationen jeg overset, der ville forklare denne adfærd.


Vi vil nok udskifte ZeroMQ til fordel for eller GRPC næste udgivelse, men jeg har spørgsmål til at svare nu.


Jeg tror, ​​jeg har tagget alt, der er relevant for driftsmiljøet.

Bedste reference



   Når jeg installerer på en Windows-server og starter ressourceovervågningen, er mængden af ​​netværkstrafik (byte skrevet) ved denne knudeproces op til 64-100 [[MB/s]]



Jeg antager, at du allerede er temmelig klar over, hvordan de lavtliggende ZeroMQ-native API-værktøjer rent faktisk fungerer der nede under hooden. Hvis ikke, kan du læse, hvordan den indbyggede API-implementering under opkaldene til zmq\_socekt\_monitor() selv sætter et andet lag ZeroMQ rør og VVS for at kunne overvåge sine egne aktiviteter (hændelser et al.) og gennemgå, hvor godt kan Windows (native eller virtualiserede platforme) klare at bruge inproc:// -kanaler opsætning blandt dine Context() instans (s) 'pool-of-iOthread (s) og den nævnte bunke. Prøv at finjustere antallet af IO-tråde, og det kan være bedre at kortlægge ZMQ\_AFFINITY på en anden måde , for at dele ' baggrunden ' arbejdsbyrder



  ...
Hvert kald til denne metode opretter en ZMQ\_PAIR stik og binder det til det specificerede inproc:// slutpunkt. For at indsamle hændelsesbegivenhederne skal du oprette din egen ZMQ\_PAIR -stik og slutte den til slutpunktet.
  

  Begivenhedsargumentet er en bitmask af de hændelsesbegivenheder, du ønsker at overvåge, se Understøttede begivenheder nedenfor. For at overvåge alle begivenheder skal du bruge begivenhedsværdien ZMQ\_EVENT\_ALL .
  

  Hver begivenhed sendes som to rammer. Den første ramme indeholder et begivenhedsnummer (16 bits) og en begivenhedsværdi (32 bits), der giver yderligere data i henhold til begivenhedsnummeret. Den anden ramme indeholder en streng, der angiver det berørte TCP eller IPC slutpunkt.



Dette er min mistænkte #1 for grunden til at se ~ 100[MB/s] af trafikken @ 250 [ms] kadence som beskrevet ovenfor (uden MCVE som du har forklaret ovenfor).


At aktivere alle mulige begivenheder (i besætningen) kan faktisk generere en vis trafikmængde, da hver FSA-event rapporterer en colourfull tilstand siden lanceret, uanset de planlagte PUB/SUB + REQ/REP skalerbare formelle kommunikationsarketype mønstre 'tilstand, der dækker alle de Tiltænkt ZeroMQ-infrastruktur s livslang livscyklus, der udbreder hver sådan konfigureret overvågningshændelse under en af ​​{ setup | operations | termination | release} -fasen:


{ ZMQ\_EVENT\_CONNECTED,
  ZMQ\_EVENT\_CONNECT\_DELAYED,
  ZMQ\_EVENT\_CONNECT\_RETRIED,
  ZMQ\_EVENT\_LISTENING,
  ZMQ\_EVENT\_BIND\_FAILED,
  ZMQ\_EVENT\_ACCEPTED,
  ZMQ\_EVENT\_ACCEPT\_FAILED,
  ZMQ\_EVENT\_CLOSED,
  ZMQ\_EVENT\_CLOSE\_FAILED,
  ZMQ\_EVENT\_DISCONNECTED,
  ZMQ\_EVENT\_MONITOR\_STOPPED
  }


så datastrømmen selv før den første tilsigtede ZeroMQ-infrastruktur 's .connect() har dukket op.





Epilog:


Hvis der også er de nævnte [GB/s] -strømme rapporteret på L3 + -netværkslagene, kan SIGINT-eksperterne bedre anmode om due dilligence og præciseringer fra platformleverandøren (erne), hvad der har været bag sådanne en platforms selvrapporterende praksis (hvis ikke engang en bagdørsklasse), der kan forklare, sikker - bedre stoppe sådanne bemærkelsesværdige netværksekstra datastrømme. Vågnede nogen at sige, at platformen måske er blevet hacket? Nå, håber det ikke var det.