Mar atá i
Lá amháin dhúisigh mé chuig ríomhphost míshuaimhneasach mar gheall ar mhoill fhada le Alvin, rud a bhí beartaithe againn a sheoladh go luath amach anseo. Go sonrach, bhí foighne 99ú peircintíl thart ar 50 ms ag an gcliant, rud a bhí i bhfad níos airde ná ár mbuiséad foighne. Ba ábhar iontais é seo mar rinne mé tástáil fhairsing ar an tseirbhís, go háirithe maidir le latency, atá ina ghearán coitianta.
Sular chuir mé Alvin isteach sa tástáil, rith mé go leor turgnaimh le 40k fiosrúchán in aghaidh an tsoicind (QPS), agus léirigh siad go léir latency níos lú ná 10ms. Bhí mé réidh a dhearbhú nár aontaigh mé lena gcuid torthaí. Ach ag breathnú eile ar an litir, thug mé faoi deara rud éigin nua: ní raibh mé tar éis tástáil cruinn a dhéanamh ar na coinníollacha a luaigh siad, bhí a QPS i bhfad níos ísle ná mo cheann féin. Thástáil mé ag 40k QPS, ach ní raibh siad ach ag 1k. Rith mé turgnamh eile, an uair seo le QPS níos ísle, díreach chun appease iad.
Ós rud é go bhfuil mé ag blagáil faoi seo, is dócha gur thuig tú cheana féin go raibh a n-uimhreacha ceart. Thástáil mé mo chliant fíorúil arís agus arís eile, leis an toradh céanna: ní hamháin go méadaíonn líon íseal iarratas an latency, ach méadaíonn sé líon na n-iarratas le latency níos mó ná 10 ms. I bhfocail eile, más rud é ag 40k QPS chuaigh thart ar 50 iarratas in aghaidh an tsoicind thar 50 ms, ansin ag 1k QPS bhí 100 iarratas os cionn 50 ms gach soicind. Paradacsa!
Caolú síos an cuardach
Nuair a bhíonn fadhb latency i gcóras dáilte ina bhfuil go leor comhpháirteanna, is é an chéad chéim ná liosta gearr d'amhrastach a chruthú. Déanaimis tochailt beagán níos doimhne isteach in ailtireacht Alvin:
Is pointe tosaigh maith é liosta de na haistrithe I/O críochnaithe (glaonna líonra/cuardaigh diosca, etc.). Déanaimis iarracht a dhéanamh amach cá bhfuil an mhoill. Seachas an I/O soiléir leis an gcliant, glacann Alvin céim bhreise: faigheann sé rochtain ar an stór sonraí. Mar sin féin, oibríonn an stóráil seo sa bhraisle céanna le Alvin, mar sin ba chóir go mbeadh an latency ann níos lú ná leis an gcliant. Mar sin, liosta na ndaoine a bhfuil amhras fúthu:
- Glao líonra ón gcliant chuig Alvin.
- Glao líonra ó Alvin chuig an stór sonraí.
- Cuardaigh ar diosca sa stór sonraí.
- Glao líonra ón stóras sonraí chuig Alvin.
- Glao líonra ó Alvin chuig cliant.
Déanaimis iarracht roinnt pointí a thrasnú.
Níl aon bhaint ag stóráil sonraí leis
Ba é an chéad rud a rinne mé ná Alvin a thiontú go freastalaí ping-ping nach ndéanann próiseáil ar iarratais. Nuair a fhaigheann sé iarratas, cuireann sé freagra folamh ar ais. Má thagann laghdú ar an bhfoighne, ní haon rud é fabht i bhfeidhmiú Alvin nó stóras sonraí. Sa chéad turgnamh faigheann muid an graf seo a leanas:
Mar a fheiceann tú, níl aon fheabhsú ar an bhfreastalaí ping-ping. Ciallaíonn sé seo nach méadaíonn an stóras sonraí latency, agus go bhfuil an liosta de na daoine a bhfuil amhras fúthu a ghearradh ina dhá leath:
- Glao líonra ón gcliant chuig Alvin.
- Glao líonra ó Alvin chuig cliant.
Go hiontach! Tá an liosta ag crapadh go tapa. Shíl mé go raibh mé beagnach figured amach an chúis.
gRPC
Anois an t-am chun tú a chur in aithne do imreoir nua: gRPC
optamaithe go maith agus a úsáidtear go forleathan, ba é seo mo chéad uair é a úsáid ar chóras den mhéid seo agus bhí mé ag súil go mbeadh mo chur i bhfeidhm suboptimal - a rá a laghad.
infhaighteacht gRPC
tháinig ceist nua sa chruach: b’fhéidir gurb é mo chur i bhfeidhm é nó mé féin gRPC
is cúis le fadhb latency? Ag cur amhrastach nua leis an liosta:
- Glaonn an cliant ar an leabharlann
gRPC
- leabharlann
gRPC
cuireann sé glaoch líonra chuig an leabharlann ar an gcliantgRPC
ar fhreastalaí - leabharlann
gRPC
teagmhálacha Alvin (gan oibríocht i gcás freastalaí ping-pong)
Chun smaoineamh a thabhairt duit ar chuma an chóid, níl mórán difríochta idir cur i bhfeidhm mo chliant/Alvin agus na cinn cliant-freastalaí
Nóta: Tá an liosta thuas beagán simplithe mar gheall ar
gRPC
is féidir do mhúnla snáithithe (teimpléad?) féin a úsáid, ina bhfuil an chruach forghníomhaithe fite fuaite ina chéilegRPC
agus cur i bhfeidhm úsáideoirí. Ar mhaithe le simplíocht, déanfaimid cloí leis an múnla seo.
Socróidh próifíliú gach rud
Tar éis na stórtha sonraí a thrasnú amach, shíl mé go raibh mé beagnach críochnaithe: “Tá sé éasca anois! Cuirimis an phróifíl i bhfeidhm agus faigh amach cá bhfuil an mhoill.” mé
Ghlac mé ceithre phróifíl: le QPS ard (latency íseal) agus le freastalaí ping-pong le QPS íseal (latency ard), ar thaobh an chliaint agus ar an taobh freastalaí. Agus ar eagla na heagla, ghlac mé próifíl próiseálaí samplach freisin. Agus próifílí á gcur i gcomparáid agam, is iondúil go bhféachaim le cruach glaonna aimhrialta. Mar shampla, ar an taobh dona le latency ard tá i bhfad níos mó lasca comhthéacs (10 n-uaire nó níos mó). Ach i mo chás, bhí líon na lasca comhthéacs beagnach mar an gcéanna. Chun mo uafás, ní raibh aon rud suntasach ann.
Dífhabhtaithe Breise
Bhí mé éadóchasach. Ní raibh a fhios agam cad iad na huirlisí eile a d'fhéadfainn a úsáid, agus ba é an chéad phlean eile a bhí agam ná na turgnaimh a dhéanamh arís le héagsúlachtaí éagsúla seachas an fhadhb a dhiagnóiseadh go soiléir.
Cad má
Ón tús, bhí imní orm faoin latency sonrach 50ms. Is am an-mhór é seo. Chinn mé go ngearrfainn smután as an gcód go dtí go bhféadfainn a dhéanamh amach go díreach cén chuid ba chúis leis an earráid seo. Ansin tháinig turgnamh a d'oibrigh.
Mar is gnách, ag breathnú siar is cosúil go raibh gach rud soiléir. Chuir mé an cliant ar an meaisín céanna le Alvin - agus chuir mé iarratas chuig localhost
. Agus tá an méadú ar latency imithe!
Bhí rud éigin cearr leis an líonra.
Foghlaim scileanna innealtóir líonra
Caithfidh mé a admháil: tá mo chuid eolais ar theicneolaíochtaí líonra uafásach, go háirithe ag smaoineamh ar an bhfíric go n-oibrím leo gach lá. Ach ba é an líonra an príomh-amhrastach, agus bhí orm a fháil amach conas é a dhífhabhtú.
Ar ámharaí an tsaoil, is breá leis an Idirlíon iad siúd atá ag iarraidh foghlaim. Ba chosúil gur tús maith go leor é an meascán de ping agus tracert chun fadhbanna iompair líonra a dhífhabhtú.
Ar dtús, sheol mé
Ansin rinne mé iarracht
Mar sin níorbh é mo chód, cur i bhfeidhm an GRPC, ná an líonra ba chúis leis an moill. Bhí imní orm nach dtuigfinn seo choíche.
Anois cad OS a bhfuil muid ar
gRPC
a úsáidtear go forleathan ar Linux, ach coimhthíocha ar Windows. Chinn mé triail a bhaint as turgnamh, a d'oibrigh: chruthaigh mé meaisín fíorúil Linux, thiomsaigh mé Alvin le haghaidh Linux, agus imscaradh mé é.
Agus seo an méid a tharla: ní raibh an mhoill chéanna ar fhreastalaí ping-pong Linux mar óstach Windows den chineál céanna, cé nach raibh an fhoinse sonraí difriúil. Tharlaíonn sé go raibh an fhadhb i gcur i bhfeidhm gRPC do Windows.
Algartam Nagle
An uair seo ar fad shíl mé go raibh bratach in easnamh orm gRPC
. Anois tuigim cad é i ndáiríre gRPC
Tá bratach Windows in easnamh. Fuair mé leabharlann inmheánach RPC a raibh muinín agam go n-oibreodh sé go maith do gach bratach a leagtar
Beagnach Arna dhéanamh: Thosaigh mé ag baint na mbratach breise ceann i ndiaidh a chéile go dtí gur tháinig an aischéimniú ar ais ionas go bhféadfainn an chúis a aimsiú. Bhí sé infamous
gRPC
socraíodh an bhratach seo i bhfeidhmiú Linux le haghaidh soicéid TCP, ach ní i Windows. Tá mé seo
Conclúid
Leas iomlán a bhaint OS ba chúis leis an latency níos airde ag QPS íseal. Ag breathnú siar air, níor bhraith an phróifíliú latency toisc go ndearnadh é i mód eithne seachas i
Maidir leis an turgnamh localhost, is dócha nár bhain sé leis an gcód líonraithe iarbhír agus níor rith algartam Nagle, agus mar sin d'imigh na saincheisteanna latency nuair a shroich an cliant Alvin trí localhost.
An chéad uair eile a fheiceann tú méadú ar latency de réir mar a thagann laghdú ar líon na n-iarratas in aghaidh an tsoicind, ba cheart go mbeadh algartam Nagle ar do liosta daoine a bhfuil amhras fúthu!
Foinse: will.com