Bħal fi
Ġurnata waħda qomt b’email disgruntled minħabba dewmien twil ma’ Alvin, li ppjanajna li nniedu fil-futur qarib. Speċifikament, il-klijent esperjenza latenza tad-99 perċentil fir-reġjun ta '50 ms, ferm ogħla mill-baġit ta' latenza tagħna. Dan kien sorprendenti peress li ttestjajt is-servizz b'mod estensiv, speċjalment fuq il-latency, li huwa ilment komuni.
Qabel ma poġġejt lil Alvin fl-ittestjar, għamilt ħafna esperimenti b'40k mistoqsijiet kull sekonda (QPS), kollha li juru latenza ta 'inqas minn 10ms. Kont lest niddikjara li ma kontx naqbel mar-riżultati tagħhom. Imma ħares ieħor lejn l-ittra, ndunajt xi ħaġa ġdida: ma kontx ittestja eżatt il-kundizzjonijiet li semmew, il-QPS tagħhom kien ferm aktar baxx minn tiegħi. Ittestjajt f'40k QPS, iżda huma biss f'1k. Jiena għamilt esperiment ieħor, din id-darba b'QPS aktar baxx, biss biex iserraħhom.
Peress li qed nibbloggja dwar dan, inti probabilment diġà dehret li n-numri tagħhom kienu tajbin. Ittestjajt il-klijent virtwali tiegħi għal darb'oħra, bl-istess riżultat: numru baxx ta 'talbiet mhux biss iżid il-latency, iżda jżid in-numru ta' talbiet b'latency ta 'aktar minn 10 ms. Fi kliem ieħor, jekk f'40k QPS madwar 50 talba kull sekonda qabżu l-50 ms, allura f'1k QPS kien hemm 100 talba 'l fuq minn 50 ms kull sekonda. Paradoss!
Tidjiq it-tfittxija
Meta jiffaċċjaw problema ta 'latenza f'sistema distribwita b'ħafna komponenti, l-ewwel pass huwa li tinħoloq lista qasira ta' suspettati. Ejja nħaffru ftit aktar fil-fond fl-arkitettura ta 'Alvin:
Punt ta' tluq tajjeb huwa lista ta' tranżizzjonijiet I/O kompluti (sejħiet tan-netwerk/lokki tad-disk, eċċ.). Ejja nippruvaw insemmu fejn hu d-dewmien. Minbarra l-I/O ovvju mal-klijent, Alvin jieħu pass żejjed: jaċċessa l-maħżen tad-dejta. Madankollu, din il-ħażna topera fl-istess cluster bħal Alvin, għalhekk il-latency għandu jkun inqas milli mal-klijent. Allura, il-lista tas-suspettati:
- Sejħa tan-netwerk mill-klijent lil Alvin.
- Sejħa tan-netwerk minn Alvin għall-maħżen tad-dejta.
- Fittex fuq disk fil-maħżen tad-data.
- Sejħa tan-netwerk mill-maħżen tad-dejta lil Alvin.
- Sejħa tan-netwerk minn Alvin lil klijent.
Ejja nippruvaw naqsbu xi punti.
Il-ħażna tad-dejta m'għandha x'taqsam xejn magħha
L-ewwel ħaġa li għamilt kienet tikkonverti Alvin għal server ping-ping li ma jipproċessax it-talbiet. Meta tirċievi talba, tirritorna tweġiba vojta. Jekk il-latency tonqos, allura bug fl-implimentazzjoni ta 'Alvin jew maħżen tad-dejta m'hu xejn li ma jinstema'. Fl-ewwel esperiment irridu nġibu l-graff li ġej:
Kif tistgħu taraw, m'hemm l-ebda titjib meta tuża s-server ping-ping. Dan ifisser li l-maħżen tad-dejta ma jżidx il-latenza, u l-lista tas-suspettati tinqata’ bin-nofs:
- Sejħa tan-netwerk mill-klijent lil Alvin.
- Sejħa tan-netwerk minn Alvin lil klijent.
Kbir! Il-lista qed tiċkien malajr. Ħsibt li kont kważi dehret ir-raġuni.
gRPC
Issa huwa ż-żmien li nintroduċik plejer ġdid: gRPC
ottimizzat tajjeb u użat ħafna, din kienet l-ewwel darba li użajtha fuq sistema ta' dan id-daqs u stennejt li l-implimentazzjoni tiegħi tkun subottimali - biex ngħidu l-inqas.
disponibbiltà gRPC
fil-munzell ta lok għal mistoqsija ġdida: forsi hija l-implimentazzjoni tiegħi jew jien stess gRPC
tikkawża problema ta 'latency? Żieda ta' suspettat ġdid mal-lista:
- Il-klijent isejjaħ il-librerija
gRPC
- Librerija
gRPC
jagħmel sejħa tan-netwerk lill-librerija fuq il-klijentgRPC
fuq is-server - Librerija
gRPC
jikkuntattja lil Alvin (l-ebda operazzjoni f'każ ta' server tal-ping-pong)
Biex nagħtik idea ta’ kif jidher il-kodiċi, l-implimentazzjoni tal-klijent/Alvin tiegħi mhijiex differenti ħafna minn dawk tal-klijent-server
Nota: Il-lista ta 'hawn fuq hija daqsxejn simplifikata għaliex
gRPC
jagħmilha possibbli li tuża l-mudell tal-kamin (mudell?) tiegħek stess, li fih il-munzell tal-eżekuzzjoni huwa marbut ma' xulxingRPC
u l-implimentazzjoni tal-utent. Għall-fini tas-sempliċità, aħna se nżommu ma 'dan il-mudell.
Il-profiling se jiffissa kollox
Wara li qtajt il-ħwienet tad-dejta, ħsibt li kont lest: “Issa faċli! Ejja napplikaw il-profil u nsiru nafu fejn iseħħ id-dewmien.” I
Ħadt erba' profili: b'QPS għoli (latenza baxxa) u b'server tal-ping-pong b'QPS baxx (latenza għolja), kemm fuq in-naħa tal-klijent kif ukoll fuq in-naħa tas-server. U fil-każ, ħadt ukoll profil tal-proċessur tal-kampjun. Meta nqabbel il-profili, normalment infittex munzell ta 'sejħiet anomali. Pereżempju, fuq in-naħa ħażina b'latenza għolja hemm ħafna aktar swiċċijiet tal-kuntest (10 darbiet jew aktar). Iżda fil-każ tiegħi, in-numru ta 'swiċċijiet tal-kuntest kien kważi l-istess. Għall-orrur tiegħi, ma kien hemm xejn sinifikanti hemmhekk.
Debugging Addizzjonali
Kont iddisprat. Ma kontx naf liema għodod oħra stajt nuża, u l-pjan li jmiss tiegħi kien essenzjalment li nirrepeti l-esperimenti b'varjazzjonijiet differenti aktar milli niddijanjostika b'mod ċar il-problema.
Kieku
Mill-bidu nett, kont imħasseb dwar il-latenza speċifika ta '50ms. Dan huwa żmien kbir ħafna. Iddeċidejt li nqatta' biċċiet mill-kodiċi sakemm stajt nifhem eżattament liema parti kienet qed tikkawża dan l-iżball. Imbagħad daħal esperiment li ħadem.
Bħas-soltu, b’ħarsa lura jidher li kollox kien ovvju. Poġġejt il-klijent fuq l-istess magna bħal Alvin - u bgħatt talba lil localhost
. U ż-żieda fil-latency marret!
Xi ħaġa kienet ħażina fin-netwerk.
Tagħlim tal-ħiliet ta' inġinier tan-netwerk
Irrid nammetti: l-għarfien tiegħi tat-teknoloġiji tan-netwerk huwa terribbli, speċjalment meta wieħed iqis il-fatt li naħdem magħhom kuljum. Iżda n-netwerk kien is-suspettat ewlieni, u kelli bżonn nitgħallem kif niddibaggjah.
Fortunatament, l-Internet iħobb lil dawk li jridu jitgħallmu. Il-kombinazzjoni ta 'ping u tracert dehret bidu tajjeb biżżejjed għad-debugging tal-problemi tat-trasport tan-netwerk.
L-ewwelnett, nediet
Imbagħad ippruvajt
Allura ma kienx il-kodiċi tiegħi, l-implimentazzjoni tal-gRPC, jew in-netwerk li kien qed jikkawża d-dewmien. Kont qed nibda ninkwieta li qatt ma se nifhem dan.
Issa fuq liema OS qegħdin
gRPC
użat ħafna fuq Linux, iżda eżotiku fuq Windows. Iddeċidejt li nipprova esperiment, li ħadem: ħloqt magna virtwali Linux, ikkumpilajt Alvin għal Linux, u skjerajtha.
U hawn x'ġara: is-server tal-ping-pong Linux ma kellux l-istess dewmien bħal host Windows simili, għalkemm is-sors tad-dejta ma kienx differenti. Jirriżulta li l-problema tinsab fl-implimentazzjoni tal-gRPC għall-Windows.
Algoritmu ta 'Nagle
Dan il-ħin kollu ħsibt li kont nieqes bandiera gRPC
. Issa nifhem x’inhu tassew gRPC
Il-bandiera tal-Windows hija nieqsa. Sibt librerija interna RPC li kont kunfidenti li taħdem tajjeb għall-bnadar kollha stabbiliti
Kważi Magħmul: Bdejt inneħħi l-bnadar miżjuda waħda waħda sakemm ir-rigressjoni reġgħet lura sabiex inkun nista' nidentifika l-kawża. Kien infami
gRPC
din il-bandiera ġiet stabbilita fl-implimentazzjoni tal-Linux għal sockets TCP, iżda mhux fil-Windows. Jien dan
Konklużjoni
Il-latency ogħla f'QPS baxx kienet ikkawżata mill-ottimizzazzjoni tal-OS. Retrospettivament, il-profiling ma skoprax latency minħabba li sar fil-modalità kernel aktar milli fi
Fir-rigward tal-esperiment localhost, probabbilment ma messx il-kodiċi tan-netwerking attwali u l-algoritmu ta 'Nagle ma damx, għalhekk il-kwistjonijiet ta' latency marru meta l-klijent laħaq Alvin permezz ta 'localhost.
Ladarba li jmiss tara żieda fil-latenza hekk kif in-numru ta' talbiet kull sekonda jonqos, l-algoritmu ta' Nagle għandu jkun fuq il-lista tiegħek ta' suspettati!
Sors: www.habr.com