Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Joalo ka boholo ba posts, ho na le bothata ka tshebeletso e abilweng, ha re bitse tshebeletso ena Alvin. Lekhetlong lena ha kea ka ka fumana bothata ka bonna, bashanyana ba tsoang lehlakoreng la bareki ba ile ba ntsebisa.

Ka letsatsi le leng ke ile ka tsoha ke fumana lengolo-tsoibila le sa khotsofalang ka lebaka la ho lieha nako e telele le Alvin, eo re neng re rerile ho e qala haufinyane. Haholo-holo, moreki o bile le 99th percentile latency sebakeng sa 50 ms, ka holimo ho tekanyetso ea rona ea latency. Sena se ne se makatsa ha ke ntse ke leka tšebeletso haholo, haholo-holo ka latency, e leng tletlebo e tloaelehileng.

Pele ke kenya Alvin tekong, ke ile ka etsa liteko tse ngata ka lipotso tsa 40k motsotsoana (QPS), kaofela li bontša latency e ka tlase ho 10ms. Ke ne ke itokiselitse ho bolela hore ha ke lumellane le liphello tsa bona. Empa ha ke sheba lengolo le leng, ke ile ka hlokomela ntho e ncha: Ke ne ke sa lekoa hantle maemo ao ba a buileng, QPS ea bona e ne e le tlase haholo ho feta ea ka. Ke lekile ho 40k QPS, empa ke 1k feela. Ke ile ka etsa teko e 'ngoe, lekhetlong lena ka QPS e tlase, ho ba khahlisa.

Kaha ke blogga ka sena, mohlomong u se u hlokometse hore linomoro tsa bona li ne li nepahetse. Ke lekile moreki oa ka oa nnete khafetsa, ka sephetho se ts'oanang: palo e tlase ea likopo ha e eketse feela latency, empa e eketsa palo ea likopo ka latency e fetang 10 ms. Ka mantsoe a mang, haeba ho 40k QPS hoo e ka bang likopo tse 50 motsotsoana li feta 50 ms, joale ho 1k QPS ho ne ho e-na le likōpo tse 100 ka holimo ho 50 ms motsotsoana o mong le o mong. Ho makatsa!

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Ho fokotsa ho batla

Ha u tobane le bothata ba latency tsamaisong e ajoang e nang le likarolo tse ngata, mohato oa pele ke ho etsa lethathamo le lekhutšoanyane la babelaelloa. Ha re cheke ka botebo boqapi ba Alvin:

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Sebaka se setle sa ho qala ke lethathamo la liphetoho tsa I/O tse phethiloeng (li-call tsa marang-rang / li-disk lookups, joalo-joalo). Ha re leke ho fumana hore na tieho e hokae. Ntle le I / O e hlakileng le moreki, Alvin o nka mohato o eketsehileng: o kena lebenkeleng la data. Leha ho le joalo, polokelo ena e sebetsa ka har'a sehlopha se tšoanang le sa Alvin, kahoo latency e lokela ho ba tlase ho feta ea moreki. Kahoo, lethathamo la babelaelloa:

  1. Mohala oa marang-rang o tsoang ho moreki ho ea ho Alvin.
  2. Mohala oa marang-rang o tsoang ho Alvin ho ea lebenkeleng la data.
  3. Batla ka disk polokelong ea data.
  4. Ho letsetsa marang-rang ho tsoa polokelong ea data ho ea ho Alvin.
  5. Mohala oa marang-rang o tsoang ho Alvin o ea ho moreki.

Ha re leke ho hlakisa lintlha tse ling.

Polokelo ea data ha e amane le eona

Ntho ea pele eo ke e entseng ke ho fetolela Alvin ho seva sa ping-ping se sa sebetseng likopo. Ha e fumana kopo, e khutlisa karabo e se nang letho. Haeba latency e fokotseha, joale phoso ho Alvin kapa ts'ebetsong ea polokelo ea data ha ho letho le sa utloahaleng. Tekong ea pele re fumana kerafo e latelang:

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Joalokaha u ka bona, ha ho na ntlafatso ha u sebelisa seva sa ping-ping. Sena se bolela hore polokelo ea data ha e eketse latency, mme lenane la babelaelloa le khaoloa ka halofo:

  1. Mohala oa marang-rang o tsoang ho moreki ho ea ho Alvin.
  2. Mohala oa marang-rang o tsoang ho Alvin o ea ho moreki.

E kholo! Lenane le ntse le fokotseha ka potlako. Ke ne ke nahana hore ke batlile ke utloisisa lebaka.

GRPC

Joale ke nako ea ho u tsebisa sebapali se secha: GRPC. Ena ke laebrari ea mohloli o bulehileng ho tsoa ho Google bakeng sa puisano e ntseng e tsoela pele RPC... Leha gRPC e ntlafalitsoe hantle ebile e sebelisoa haholo, lena e ne e le lekhetlo la ka la pele ke e sebelisa tsamaisong ea boholo bona mme ke ne ke lebelletse hore ts'ebetsong ea ka e tla ba ea bohlokoa - ho bua hanyane.

ho fumaneha gRPC ka har'a stack e hlahisitse potso e ncha: mohlomong ke ts'ebetsong ea ka kapa 'na gRPC ho baka bothata ba latency? Ho kenya 'melaelloa e mocha lenaneng:

  1. Moreki o letsetsa laeborari gRPC
  2. laebrari gRPC etsa mohala oa netweke ho laeborari ho moreki gRPC ho seva
  3. laebrari gRPC mabitso Alvin (ha ho na ts'ebetso haeba ho na le seva sa ping-pong)

Ho u fa leseli la hore na khoutu e shebahala joang, ts'ebetsong ea moreki oa ka / Alvin ha e fapane hole le li-server-server. async mehlala.

Ela hloko: Lenane le ka holimo le nolofalitsoe hanyane hobane gRPC e etsa hore ho khonehe ho sebelisa mohlala oa hau (thempleite?) oa khoele, oo ho oona mokoloko oa ho bolaoa o kopantsoeng. gRPC le ts'ebetsong ea basebelisi. Molemong oa ho nolofatsa, re tla khomarela mohlala ona.

Ho etsa profil ho tla lokisa tsohle

Ha ke se ke tlohile mabenkele a data, ke ile ka nahana hore ke se ke qetile: "Joale ho bonolo! Ha re sebeliseng profil 'me re fumane hore na tieho e etsahala hokae. ” I fan e kholo ea profiling e nepahetseng, hobane li-CPU li potlakile haholo 'me hangata ha se bothata. Litieho tse ngata li etsahala ha processor e tlameha ho emisa ho sebetsa ho etsa ho hong. Profil e nepahetseng ea CPU e etsa joalo feela: e tlaleha tsohle ka nepo maemo a fetoha le ho hlakisa moo tieho e bang teng.

Ke ile ka nka litlaleho tse 'nè: ka QPS e phahameng (low latency) le seva sa ping-pong se nang le QPS e tlaase (high latency), ka bobeli ka lehlakoreng la bareki le ka lehlakoreng la seva. Mme ha ho ka etsahala, ke boetse ke nkile mohlala oa profil ea processor. Ha ke bapisa li-profile, hangata ke batla mehala e makatsang. Ka mohlala, ka lehlakoreng le lebe le nang le latency e phahameng ho na le liphetoho tse ling tse ngata tsa moelelo (makhetlo a 10 kapa ho feta). Empa molemong oa ka, palo ea li-switches tsa maemo e ne e batla e tšoana. Ke ile ka tšoha, ho ne ho se letho la bohlokoa moo.

Tlatsetso Debugging

Ke ne ke tsielehile. Ke ne ke sa tsebe hore na ke lisebelisoa life tse ling tseo nka li sebelisang, 'me morero oa ka o latelang e ne e le ho pheta liteko ka mefuta e fapaneng ho e-na le ho hlahloba bothata ka ho hlaka.

Haeba

Ho tloha qalong, ke ne ke amehile ka 50ms latency e itseng. Ena ke nako e kholo haholo. Ke ile ka etsa qeto ea hore ke tla khaola likaroloana tsa khoutu ho fihlela ke tseba hantle hore na ke karolo efe e bakang phoso ena. Eaba ho latela teko e ileng ea sebetsa.

Joalo ka tloaelo, ho bonahala eka ntho e 'ngoe le e 'ngoe e ne e hlakile. Ke behile moreki mochining o tšoanang le oa Alvin - mme ka romella kopo ho localhost. 'Me keketseho ea latency e felile!

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Ho bile le phoso ka marang-rang.

Ho ithuta bokhoni ba moenjiniere oa marang-rang

Ke tlameha ho lumela: tsebo ea ka ea theknoloji ea marang-rang e tšabeha, haholo-holo ha ke nahana ka taba ea hore ke sebetsa le bona letsatsi le leng le le leng. Empa marang-rang e ne e le 'melaelloa ea ka sehloohong,' me ke ne ke hloka ho ithuta ho e lokisa.

Ka lehlohonolo, Marang-rang a rata ba batlang ho ithuta. Motsoako oa ping le tracert o ne o bonahala e le qalo e ntle ea ho rarolla mathata a lipalangoang tsa marang-rang.

Ntlha ea pele, ke ile ka qala PsPing ho ea boema-kepeng ba Alvin TCP. Ke sebelisitse li-setting tsa kamehla - ha ho letho le ikhethang. Ho feta li-pings tse sekete, ha ho le e 'ngoe e fetang 10 ms, ntle le ea pele ea ho futhumala. Sena se hanana le keketseho e hlokometsoeng ea latency ea 50 ms ho 99th percentile: moo, bakeng sa likopo tse ling le tse ling tse 100, re ka be re bone ka kopo e le 'ngoe e nang le latency ea 50 ms.

Eaba ke leka tracer: Ho ka 'na ha e-ba le bothata sebakeng se seng sa libaka tse haufi le tsela e pakeng tsa Alvin le moreki. Empa seterata le sona se ile sa khutla se se na letho.

Kahoo e ne e se khoutu ea ka, ts'ebetsong ea gRPC, kapa marang-rang a neng a baka tieho. Ke ne ke qala ho tšoenyeha hore nke ke ka utloisisa taba ena.

Joale ke OS efe eo re leng ho eona

gRPC e sebelisoa haholo Linux, empa e sa tloaelehang ho Windows. Ke ile ka etsa qeto ea ho leka teko, e ileng ea sebetsa: Ke thehile mochine o sebetsang oa Linux, ka bokella Alvin bakeng sa Linux, 'me ka e sebelisa.

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

'Me sena ke se etsahetseng: seva sa Linux ping-pong ha sea ka sa ba le tieho e tšoanang le ea moamoheli ea tšoanang oa Windows, leha mohloli oa data o ne o sa fapana. Hoa fumaneha hore bothata bo ts'ebetsong ea gRPC bakeng sa Windows.

Algorithm ea Nagle

Nakong ena eohle ke ne ke nahana hore ke lahleheloa ke folakha gRPC. Joale kea utloisisa hore na ha e le hantle ke eng gRPC Folakha ea Windows ha e eo. Ke fumane laebrari ea ka hare ea RPC eo ke neng ke kholisehile hore e tla sebetsa hantle bakeng sa lifolakha tsohle tse behiloeng Winsock. Eaba ke kenyelletsa lifolakha tsena kaofela ho gRPC mme ka sebelisa Alvin ho Windows, ka har'a seva sa Windows se patiloeng sa ping-pong!

Ka linako tse ling ho feta ho fokotseha. Ha ho fokotsa mojaro ho fella ka ho eketseha ha latency

Hoo e ka bang E entsoe: Ke ile ka qala ho tlosa lifolakha tse ekelitsoeng ka bonngoe ho fihlela khatello e khutla e le hore nka supa sesosa. E ne e tumme hampe TCP_NODELAY, Nagle's algorithm switch.

Algorithm ea Nagle ho leka ho fokotsa palo ea lipakete tse rometsoeng holim'a marang-rang ka ho lieha ho fetisa melaetsa ho fihlela boholo ba pakete bo feta palo e itseng ea li-byte. Le hoja sena se ka 'na sa e-ba monate bakeng sa mosebedisi ea tloaelehileng, se senya bakeng sa li-server tsa nako ea sebele kaha OS e tla liehisa melaetsa e meng, e bakang li-lags ho QPS e tlaase. U gRPC folakha ena e behiloe ts'ebetsong ea Linux bakeng sa li-sockets tsa TCP, empa eseng Windows. Ke sena lokisitsoe.

fihlela qeto e

The latency e phahameng ho QPS e tlase e bakiloe ke ntlafatso ea OS. Ha re hetla morao, profiling ha ea ka ea bona latency hobane e entsoe ka mokhoa oa kernel ho fapana le ka mosebedisi. Ha ke tsebe hore na algorithm ea Nagle e ka bonoa ka ho ts'oaroa ha ETW, empa e ka ba monate.

Ha e le teko ea localhost, mohlomong ha ea ka ea ama khoutu ea nnete ea marang-rang mme algorithm ea Nagle ha ea ka ea sebetsa, kahoo litaba tsa latency li ile tsa fela ha moreki a fihla Alvin ka localhost.

Nakong e tlang ha u bona keketseho ea latency ha palo ea likopo motsotsoana e fokotseha, algorithm ea Nagle e lokela ho ba lethathamong la hau la babelaelloa!

Source: www.habr.com

Eketsa ka tlhaloso