‘Solana-data is traag of onvolledig?’ Wat je in je ontvangstinfrastructuur moet controleren

‘Solana-data is traag of onvolledig?’ Wat je in je ontvangstinfrastructuur moet controleren

‘Solana-data is traag of onvolledig?’ Wat je in je ontvangstinfrastructuur moet controleren
Je neemt een snelle Solana Shreds-stream af, maar er komen nauwelijks pakketten binnen. De Shreds die je ontvangt zijn correct te ontleden, maar er ontbreken te veel fragmenten om transacties uit te lezen. gRPC werkt wel op dezelfde server, waardoor je niet weet waar je verder moet zoeken.
Controleer naast de verzender ook je applicatieserver en het datacenter waarin die staat. Zelfs wanneer ERPC Shreds snel doorstuurt, kunnen UDP-beperkingen op het netwerkpad of verwerkingsknelpunten op de ontvangende server ervoor zorgen dat je applicatie die snelheid niet kan benutten.
Bij het kiezen van een Shreds-stream telt het hele traject: hoe de pakketten aankomen en hoe ze bruikbare data worden. Netwerkkwaliteit, afstand en het operationele beleid van het datacenter zijn ook bepalend voor de prestaties van Geyser Yellowstone gRPC, regulier RPC- en API-verkeer en het indienen van transacties.
Schematisch traject van de snelle Shreds-levering door ERPC via het ontvangende datacenter en de applicatieserver naar bruikbare data. Netwerkbeperkingen en verwerkingsknelpunten binnen de server worden afzonderlijk weergegeven.

Verzendregistraties en bruikbare ontvangen data zijn verschillende waarnemingen

Bij een recente supportvraag aan ERPC registreerden korte metingen aan de verzendkant ongeveer 3.400–3.900 pakketten/sec. Aan de ontvangstkant werd ongeveer 13 pakketten/sec gemeld, zonder dat de reconstructie van een slot werd voltooid.
Deze cijfers komen uit verschillende meetperioden. Ook is niet bevestigd dat de meetmethoden vergelijkbaar zijn. Ze geven daarom geen afleveringspercentage of verliespercentage aan. Registraties aan de verzendkant bewijzen op zichzelf niet dat de pakketten op de bestemming aankomen. Op het moment van schrijven is de uiteindelijke oorzaak nog niet vastgesteld.
Een paar duizend PPS betekent op zichzelf evenmin dat de belasting uitzonderlijk hoog is voor een gewone server. De vragen zijn wat er op het werkelijke netwerkpad gebeurt, welke beperkingen gelden, hoe sterk verkeer zich in korte perioden concentreert, hoe de ontvangst wordt verwerkt en wat elke teller precies meet.

Allebei in Frankfurt, maar via verschillende netwerkpaden

De bron van je stream en je applicatieserver kunnen allebei in Frankfurt staan, maar zich toch in verschillende datacenters bevinden. In zo’n configuratie kan verkeer het ene gebouw verlaten, via een extern netwerk lopen en het andere gebouw binnengaan. Dezelfde regionaam betekent niet automatisch dezelfde locatie, netwerkbeheerder of tussenliggende apparatuur.
Wanneer ERPC-streams of RPC-diensten worden gecombineerd met een ERPC VPS of Bare Metal op dezelfde locatie, staan de servers voor die diensten en de applicatieserver in racks dicht bij elkaar. Het verkeer tussen deze servers blijft op het interne netwerk. Dat is het idee achter ERPC’s Zero-Distance Communication: de fysieke plaatsing en het pad naar de ontvangende applicatie samen ontwerpen, in plaats van alleen dezelfde stad te kiezen.
Schematische vergelijking tussen een pad via een extern netwerk tussen afzonderlijke datacenters in Frankfurt en een ERPC-configuratie met nabijgelegen racks en een intern pad op dezelfde locatie. De vergelijking toont de verbinding tussen ERPC-diensten en applicatieservers voor Shreds, Yellowstone gRPC, RPC en het indienen van transacties.
Door een externe omweg tussen ERPC-diensten en de applicatieserver te vermijden, wordt het pad korter. Op dat traject neemt ook de invloed van congestie en routewijzigingen op externe netwerken af. Een kort pad, gecombineerd met voldoende middelen voor ontvangst en verwerking, vormt de basis om een snelle stream te benutten. Controleer het resultaat zowel bij de aankomst van pakketten als bij de verwerking in de applicatie.

Netwerkomstandigheden beïnvloeden alle soorten communicatie

Bij Shreds maken ontbrekende fragmenten het probleem zichtbaar, maar de kwaliteit van dezelfde infrastructuur heeft ook gevolgen voor dataontvangst, API-verzoeken en het indienen van transacties. Het protocol bepaalt welke symptomen de applicatie ziet en op welke punten meten zinvol is.
CommunicatieWaar netwerkeffecten zichtbaar wordenWat je in de applicatie controleert
Shreds / UDPPakketverlies en vertraging, en de aankomst van fragmenten die voor reconstructie nodig zijnGeldige Shreds en de tijd totdat data kan worden gereconstrueerd
Geyser Yellowstone gRPCWachten op TCP-hertransmissies, opstopping en vertraging in de streamDe tijd totdat dezelfde update is ontvangen en verwerkt
RPC, API’s en verkeer tussen dienstenDe heen- en terugweg van verzoeken en antwoorden, en wachttijd bij congestieAntwoordtijd en de variatie daarin
Transacties indienenHet pad van het verzoek naar de ontvangende nodeDe tijd vanaf het verzendverzoek tot het antwoord van de node
Een nabije plaatsing en passend operationeel beleid ondersteunen al dit verkeer. Meet de antwoordtijd van de ontvangende node afzonderlijk van de tijd totdat een transactie on-chain wordt opgenomen en gefinaliseerd.

Gbps vertelt niet alles over PPS en verkeerspieken

Bandbreedte beschrijft hoeveel data in een bepaalde tijd kan worden vervoerd. PPS geeft het aantal pakketten aan dat per seconde wordt verwerkt. Een verbinding kan nog bandbreedte over hebben, maar toch een limiet op de pakketsnelheid of een beperking voor UDP bereiken. Ook de officiële documentatie van cloudproviders behandelt bandbreedte- en PPS-limieten als afzonderlijke beperkingen.[1]
Shreds komen bovendien niet noodzakelijk in een gelijkmatig tempo aan. Een korte verkeerspiek kan druk op wachtrijen veroorzaken die in een gemiddelde onzichtbaar blijft. Wanneer pakketten sneller binnenkomen dan een netwerkapparaat of ontvanger ze kan verwerken, kunnen pakketten boven de capaciteit van de wachtrij worden weggegooid.[2]
Vraag je hostingprovider naar aanhoudend UDP-verkeer, korte pieken, PPS-limieten en de regels van DDoS-bescherming. Het doel is vast te stellen onder welke voorwaarden het benodigde verkeer veilig kan worden toegelaten, zonder beveiligingsmaatregelen zomaar uit te schakelen.

Werkend gRPC bewijst niet dat UDP goed wordt ontvangen

gRPC op basis van TCP en de overdracht van onbewerkte Shreds via UDP gebruiken verschillende transportmechanismen. TCP verzorgt hertransmissie en volgorde. Streaming via gRPC heeft flowcontrol die rekening houdt met de capaciteit van de ontvanger. UDP zelf verstuurt ontbrekende pakketten niet opnieuw en laat de verzender niet wachten totdat de ontvangende applicatie de achterstand heeft ingehaald.[3]
Dat gRPC op een server werkt, bewijst dus niet dat het UDP-pad of de UDP-ontvangst ook goed werkt. Filters per protocol, poorten, afleverroutes en de implementatie van de ontvanger moeten apart worden gecontroleerd. Verwerkingsvertragingen bij gRPC kunnen zich eveneens uiten als wachttijd of verbroken verbindingen.
Transacties/sec bij gRPC en pakketten/sec bij UDP zijn verschillende eenheden op verschillende verwerkingsniveaus. Je kunt ze niet rechtstreeks vergelijken om de hoeveelheid geleverde data of een verliespercentage te berekenen.

Van binnenkomende pakketten naar bruikbare data

Bij een gewone UDP-socketontvanger gaan binnenkomende pakketten via de NIC, de kernel en de ontvangstbuffer van de socket naar de applicatie. Als de verwerking achterloopt, kunnen pakketten ook na aankomst op de host worden weggegooid. De ontvangsttellers van Linux-netwerkinterfaces bevatten pakketten die later alsnog worden weggegooid. Een stijgende ontvangstteller alleen bewijst daarom niet dat data de applicatie heeft bereikt.[4]
Een afzonderlijke ontvangstwachtrij of CPU-core kan druk bezet zijn terwijl het totale CPU-gebruik laag is. Controleer de NIC-wachtrijen, de verdeling van interrupts en de prestaties per core. Scheid in de applicatie de ontvangst waar nodig van de verdere verwerking. Houd zware analyse en overmatige loguitvoer buiten de ontvangstlus. Een grotere ontvangstbuffer kan tijdelijke pieken opvangen, maar lost een aanhoudend tekort aan verwerkingscapaciteit niet op.[5]
Shreds zijn fragmenten van blokdata. Voorwaartse foutcorrectie (FEC) kan ontbrekende data herstellen met data Shreds en coding Shreds uit dezelfde groep. Voor reconstructie blijven echter voldoende fragmenten nodig. Meer dubbele pakketten vervangen de ontbrekende fragmenten niet.[6]
Afhankelijk van de implementatie kan een ontvanger entries reconstrueren uit beschikbare fragmenten voordat het hele slot compleet is.[9] Meet naast het totale aantal pakketten ook geldige unieke Shreds, gereconstrueerde data en de tijd totdat de applicatie de benodigde gebeurtenis herkent.

Meet elke stap binnen hetzelfde tijdvenster

Stem de bestemming, poort en het meetvenster aan beide kanten op elkaar af. Door de volgende stappen afzonderlijk vast te leggen, kun je gerichter bepalen wat je verder moet onderzoeken.
MeetpuntWat je vastlegtWat het aantoont
VerzenderRegistraties voor de bedoelde bestemming en de definitie van de tellerWelke stap van de verzending is waargenomen
Ingang van de ontvangende hostCapture van het bedoelde UDP-verkeer, NIC-statistieken en gemiste pakketten in de capture zelfHoeveel verkeer op dat waarnemingspunt zichtbaar was
Besturingssysteem en socketUDP-fouten, drops in de ontvangstbuffer en veranderingen in wachtrijenOf de ontvangstverwerking binnen de host achteropraakt
Reconstructie van ShredsGeldige unieke Shreds, geslaagde reconstructies, ontbrekende data en foutenOf de pakketten de benodigde data opleveren
ApplicatieVerwerkingsachterstand en detectietijdstippen van dezelfde gebeurtenisOf de snelle aankomst daadwerkelijk in de applicatie wordt benut
Als een capture weinig pakketten laat zien, controleer dan eerst het filter, de waargenomen interface, verliezen in de capture zelf en drops bij de NIC. Sommige tellers van het besturingssysteem gelden voor de hele host of netwerknamespace. Controleer hun bereik en breng ze in verband met metingen van de bedoelde applicatie.[4][5]
Pas instellingen aan nadat je hebt vastgesteld waar de beperking zit. Alleen een buffer of ring vergroten kan het knelpunt verplaatsen of de wachttijd verhogen. De actuele ERPC-configuratie voor ontvangst en de bijbehorende controles staan hier:

Kies ook het operationele beleid, niet alleen de server

De Solana Foundation legt uit waarom controle over NIC’s, fysieke cores, drivers en netwerken belangrijk is voor krachtige validators. De volledige vereisten voor een validator moeten echter niet zonder meer op elke Shreds-ontvanger worden toegepast. Een ontvangende applicatie heeft een configuratie nodig die past bij de eigen stream en verwerkingslast.[7]
Kosten of energieverbruik verlagen is een begrijpelijk bedrijfsdoel. HFT- en realtimeapplicaties hebben daarnaast een snel reagerende CPU, aanhoudende verwerkingscapaciteit en korte wachttijden op het netwerk nodig. Ontwaken uit een energiebesparende toestand kan extra latentie met zich meebrengen.[8]
Controleer naast het CPU-model en het aantal cores hoe resources worden gedeeld, hoe met langdurige belasting wordt omgegaan, welke voorwaarden gelden voor UDP-verkeer en welk netwerkpad daadwerkelijk wordt gebruikt.

ERPC bekijkt de stream en de ontvangstomgeving als één geheel

ERPC werkt aan de selectie van datacenters dicht bij Solana-infrastructuur, netwerkpaden, hardware en operationele instellingen. Naast Shreds en gRPC bieden we VPS en Bare Metal aan. Je kunt een VPS kiezen die past bij je verwerkingslast en Bare Metal vergelijken wanneer je fysieke resources exclusief wilt gebruiken.
Kennis van de configuratie en het beheer van de omgevingen die we aanbieden, helpt ook bij technische ondersteuning. We kunnen registraties aan de verzendkant vergelijken met metingen aan de ontvangstkant en concrete controles bepalen voor netwerk, besturingssysteem of applicatie. Bij de hier beschreven supportvraag hebben we de metingen aan de verzendkant gecontroleerd en om aanvullende metingen bij de ontvanger gevraagd.
Door de stream, de plaatsing van de ontvanger en de implementatie van de applicatie samen te beoordelen, wordt duidelijker wat er nog ontbreekt tussen de gekozen dienst en de data die je nodig hebt.

Vergelijk je huidige omgeving met facturering per uur

Twijfel je aan je ontvangstomgeving, probeer dan een ERPC VPS of Bare Metal met facturering per uur en vergelijk dezelfde stream en applicatie. In het dashboard vind je de actuele prijzen, beschikbaarheid en bestelvoorwaarden voor de gewenste regio.
Begin met een beschikbare configuratie en registreer ontvangstaantallen, gereconstrueerde data, verwerkingsachterstand en detectietijdstippen van dezelfde gebeurtenissen. Controleer bij het vergelijken van tijdstempels tussen hosts ook de nauwkeurigheid van de kloksynchronisatie. Herhaal de test op verschillende tijdstippen en vergelijk waar in het traject de resultaten verschillen. Gebruik die metingen om een server en datacenter te kiezen die bij je applicatie passen.

Gerelateerde artikelen

Technische bronnen