Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Bi ninu julọ ​​posts, nibẹ ni a isoro pẹlu a pin iṣẹ, jẹ ki ká pe yi iṣẹ Alvin. Ni akoko yii Emi ko ṣe iwari iṣoro naa funrararẹ, awọn eniyan lati ẹgbẹ alabara sọ fun mi.

Ni ọjọ kan Mo ji si imeeli aibalẹ nitori awọn idaduro pipẹ pẹlu Alvin, eyiti a gbero lati ṣe ifilọlẹ ni ọjọ iwaju nitosi. Ni pataki, alabara ni iriri airi ipin ogorun 99th ni agbegbe 50 ms, daradara ju isuna airi wa lọ. Eyi jẹ iyalẹnu bi Mo ṣe idanwo iṣẹ naa lọpọlọpọ, paapaa lori lairi, eyiti o jẹ ẹdun ti o wọpọ.

Ṣaaju ki Mo to fi Alvin sinu idanwo, Mo ran ọpọlọpọ awọn adanwo pẹlu awọn ibeere 40k fun iṣẹju keji (QPS), gbogbo n ṣafihan lairi ti o kere ju 10ms. Mo ti ṣetan lati kede pe Emi ko gba pẹlu awọn abajade wọn. Ṣugbọn ni wiwo miiran ni lẹta naa, Mo ṣe akiyesi nkan tuntun: Emi ko ṣe idanwo awọn ipo gangan ti wọn mẹnuba, QPS wọn kere pupọ ju temi lọ. Mo ṣe idanwo ni 40k QPS, ṣugbọn wọn nikan ni 1k. Mo tun ṣe idanwo miiran, ni akoko yii pẹlu QPS kekere kan, lati tù wọn loju.

Niwọn igba ti Mo n ṣe bulọọgi nipa eyi, o ti rii tẹlẹ pe awọn nọmba wọn tọ. Mo ṣe idanwo alabara foju mi ​​leralera, pẹlu abajade kanna: nọmba kekere ti awọn ibeere kii ṣe alekun lairi nikan, ṣugbọn mu nọmba awọn ibeere pọ si pẹlu airi ti o ju 10 ms. Ni awọn ọrọ miiran, ti o ba jẹ ni 40k QPS nipa awọn ibeere 50 fun iṣẹju keji ti kọja 50 ms, lẹhinna ni 1k QPS awọn ibeere 100 wa loke 50 ms ni iṣẹju-aaya kọọkan. Paradox!

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Din awọn wiwa

Nigbati o ba dojuko iṣoro lairi ni eto pinpin pẹlu ọpọlọpọ awọn paati, igbesẹ akọkọ ni lati ṣẹda atokọ kukuru ti awọn ifura. Jẹ ki a jinlẹ diẹ si inu faaji Alvin:

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Ibẹrẹ ti o dara jẹ atokọ ti awọn iyipada I/O ti pari (awọn ipe nẹtiwọọki / wiwa disk, ati bẹbẹ lọ). Jẹ ki a gbiyanju lati ro ero ibi ti idaduro naa wa. Yato si I/O ti o han gbangba pẹlu alabara, Alvin ṣe igbesẹ afikun: o wọle si ile itaja data naa. Sibẹsibẹ, ibi ipamọ yii n ṣiṣẹ ni iṣupọ kanna bi Alvin, nitorinaa lairi nibẹ yẹ ki o kere ju pẹlu alabara. Nitorinaa, atokọ ti awọn ifura:

  1. Ipe nẹtiwọki lati ọdọ alabara si Alvin.
  2. Ipe nẹtiwọki lati Alvin si ile itaja data.
  3. Wa lori disk ni ile itaja data.
  4. Ipe nẹtiwọki lati ibi ipamọ data si Alvin.
  5. Ipe nẹtiwọki lati ọdọ Alvin si alabara kan.

Jẹ ká gbiyanju lati sọdá jade diẹ ninu awọn ojuami.

Ibi ipamọ data ko ni nkankan lati ṣe pẹlu rẹ

Ohun akọkọ ti Mo ṣe ni iyipada Alvin si olupin ping-ping ti ko ṣe ilana awọn ibeere. Nigbati o ba gba ibeere kan, o da esi sofo pada. Ti idaduro ba dinku, lẹhinna kokoro kan ninu Alvin tabi imuse ile-itaja data kii ṣe nkan ti a ko gbọ. Ninu idanwo akọkọ a gba aworan atẹle:

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Bi o ti le rii, ko si ilọsiwaju nigba lilo olupin ping-ping. Eyi tumọ si pe ile-itaja data ko ni alekun lairi, ati pe atokọ ti awọn ifura ti ge ni idaji:

  1. Ipe nẹtiwọki lati ọdọ alabara si Alvin.
  2. Ipe nẹtiwọki lati ọdọ Alvin si alabara kan.

Nla! Awọn akojọ ti wa ni sunki ni kiakia. Mo ro pe mo ti fẹrẹ mọ idi naa.

gRPC

Bayi ni akoko lati ṣafihan ọ si ẹrọ orin tuntun kan: gRPC. Eyi jẹ ile-ikawe orisun ṣiṣi lati Google fun ibaraẹnisọrọ inu ilana CPR... Biotilejepe gRPC iṣapeye daradara ati lilo pupọ, eyi ni igba akọkọ mi ni lilo lori eto ti iwọn yii ati pe Mo nireti imuse mi lati jẹ suboptimal - lati sọ o kere ju.

Wiwa gRPC ninu akopọ naa funni ni ibeere tuntun: boya o jẹ imuse mi tabi funrararẹ gRPC nfa iṣoro lairi? Ṣafikun ifura tuntun si atokọ:

  1. Onibara pe ile-ikawe gRPC
  2. ìkàwé gRPC ṣe ipe nẹtiwọki kan si ile-ikawe lori alabara gRPC lori olupin
  3. ìkàwé gRPC awọn olubasọrọ Alvin (ko si iṣẹ ni ọran ti olupin ping-pong)

Lati fun ọ ni imọran kini koodu naa dabi, alabara mi / imuse Alvin ko yatọ pupọ si awọn olupin-olupin async apẹẹrẹ.

Akiyesi: Akojọ ti o wa loke jẹ irọrun diẹ nitori gRPC mu ki o ṣee ṣe lati lo ti ara rẹ (awoṣe?) Titẹ awoṣe, ninu eyiti akopọ ipaniyan ti wa ni intertwined gRPC ati imuse olumulo. Fun idi ti ayedero, a yoo Stick si awoṣe yii.

Profaili yoo ṣatunṣe ohun gbogbo

Lẹhin ti o ti kọja awọn ile itaja data, Mo ro pe Mo ti fẹrẹ ṣe: “Bayi o rọrun! Jẹ ki a lo profaili naa ki o wa ibiti idaduro naa ti waye. ” I nla àìpẹ ti konge profaili, nitori awọn CPUs yara pupọ ati nigbagbogbo kii ṣe igo. Pupọ awọn idaduro waye nigbati ero isise gbọdọ da iṣẹ duro lati ṣe nkan miiran. Profaili Sipiyu deede ṣe iyẹn: o ṣe igbasilẹ ohun gbogbo ni deede o tọ yipada o si mu ki o ye ibi ti awọn idaduro waye.

Mo mu awọn profaili mẹrin: pẹlu QPS giga (lairi kekere) ati pẹlu olupin ping-pong pẹlu QPS kekere (lairi giga), mejeeji ni ẹgbẹ alabara ati ni ẹgbẹ olupin. Ati pe ni ọran, Mo tun mu profaili ero isise apẹẹrẹ kan. Nigbati a ba ṣe afiwe awọn profaili, Mo maa n wa akopọ ipe ailorukọ kan. Fun apẹẹrẹ, ni ẹgbẹ buburu pẹlu lairi giga ọpọlọpọ awọn iyipada ọrọ-ọrọ diẹ sii (awọn akoko 10 tabi diẹ sii). Ṣugbọn ninu ọran mi, nọmba awọn iyipada ọrọ-ọrọ jẹ fere kanna. Si ẹru mi, ko si nkankan pataki nibẹ.

Afikun N ṣatunṣe aṣiṣe

Mo ti wà desperate. Emi ko mọ kini awọn irinṣẹ miiran ti MO le lo, ati pe ero atẹle mi jẹ pataki lati tun awọn idanwo naa ṣe pẹlu awọn iyatọ oriṣiriṣi dipo ki o ṣe iwadii iṣoro naa kedere.

Boya ti

Lati ibere pepe, Mo ni aniyan nipa lairi 50ms pato. Eyi jẹ akoko nla pupọ. Mo pinnu pe Emi yoo ge awọn ege kuro ninu koodu naa titi Emi yoo fi rii gangan apakan wo ni o nfa aṣiṣe yii. Lẹhinna ṣe idanwo kan ti o ṣiṣẹ.

Gẹgẹbi igbagbogbo, ni ẹhin o dabi pe ohun gbogbo han gbangba. Mo ti gbe awọn ose lori kanna ẹrọ bi Alvin - ati ki o rán a ìbéèrè lati localhost. Ati ilosoke ninu lairi ti lọ!

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Ohun kan ti ko tọ pẹlu nẹtiwọki.

Awọn ọgbọn ẹlẹrọ nẹtiwọọki kikọ

Mo gbọdọ gba: imọ mi ti awọn imọ-ẹrọ nẹtiwọọki jẹ ẹru, paapaa ni akiyesi otitọ pe Mo ṣiṣẹ pẹlu wọn lojoojumọ. Ṣugbọn nẹtiwọọki naa jẹ ifura akọkọ, ati pe Mo nilo lati kọ bi a ṣe le ṣatunṣe rẹ.

Ni Oriire, Intanẹẹti nifẹ awọn ti o fẹ kọ ẹkọ. Apapo ping ati tracert dabi ẹnipe o dara to bẹrẹ lati ṣatunṣe awọn iṣoro irinna nẹtiwọọki.

Ni akọkọ, Mo ṣe ifilọlẹ PsPing to Alvin ká TCP ibudo. Mo ti lo awọn aiyipada eto - ohunkohun pataki. Ninu diẹ ẹ sii ju ẹgbẹrun pings, ko si ọkan ti o kọja 10 ms, ayafi ti akọkọ fun imorusi. Eyi jẹ ilodi si ilosoke ti a ṣe akiyesi ni lairi ti 50 ms ni ogorun 99th: nibẹ, fun gbogbo awọn ibeere 100, o yẹ ki a ti rii nipa ibeere kan pẹlu lairi ti 50 ms.

Nigbana ni mo gbiyanju tracertere: Iṣoro le wa ni ọkan ninu awọn apa pẹlu ipa laarin Alvin ati alabara. Ṣugbọn olutọpa naa tun pada ni ọwọ ofo.

Nitorinaa kii ṣe koodu mi, imuse gRPC, tabi nẹtiwọọki ti o fa idaduro naa. Mo bẹrẹ lati ṣe aniyan pe Emi kii yoo loye eyi.

Bayi kini OS wa lori

gRPC o gbajumo ni lilo lori Linux, ṣugbọn nla, on Windows. Mo pinnu lati gbiyanju idanwo kan, eyiti o ṣiṣẹ: Mo ṣẹda ẹrọ foju Linux kan, ṣajọ Alvin fun Linux, mo si gbe e lọ.

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Ati pe eyi ni ohun ti o ṣẹlẹ: olupin ping-pong Linux ko ni awọn idaduro kanna bi ogun Windows kan ti o jọra, botilẹjẹpe orisun data ko yatọ. O han pe iṣoro naa wa ninu imuse gRPC fun Windows.

algorithm Nagle

Ni gbogbo akoko yii Mo ro pe Mo padanu asia kan gRPC. Bayi Mo loye kini o jẹ gaan gRPC Asia Windows sonu. Mo rii ile-ikawe RPC inu ti Mo ni igboya yoo ṣiṣẹ daradara fun gbogbo awọn asia ti a ṣeto Winsock. Lẹhinna Mo ṣafikun gbogbo awọn asia wọnyi si gRPC ati gbe Alvin sori Windows, ni olupin Windows ping-pong patched!

Nigba miiran diẹ sii kere si. Nigbati o ba dinku awọn abajade fifuye ni alekun lairi

Fere Ti ṣe: Mo bẹrẹ yiyọ awọn asia ti a ṣafikun ni ẹẹkan titi ti ipadasẹhin yoo fi pada ki MO le ṣe afihan idi naa. O je ailokiki TCP_NODELAY, Nagle ká alugoridimu yipada.

algorithm Nagle igbiyanju lati dinku nọmba awọn apo-iwe ti a firanṣẹ lori nẹtiwọki kan nipa idaduro gbigbe awọn ifiranṣẹ titi ti iwọn apo-iwe naa ti kọja nọmba kan ti awọn baiti. Nigba ti yi le jẹ dara fun awọn apapọ olumulo, o jẹ iparun fun gidi-akoko apèsè bi OS yoo se idaduro diẹ ninu awọn ifiranṣẹ, nfa lags kekere QPS. U gRPC yi Flag ti a ṣeto ni Linux imuse fun TCP sockets, sugbon ko ni Windows. Emi ni eyi atunse.

ipari

Lairi ti o ga julọ ni QPS kekere jẹ idi nipasẹ iṣapeye OS. Ni ifojusọna, profaili ko ṣe awari idaduro nitori pe o ti ṣe ni ipo ekuro kuku ju sinu olumulo mode. Emi ko mọ boya algorithm Nagle le ṣe akiyesi nipasẹ awọn iyaworan ETW, ṣugbọn yoo jẹ ohun ti o dun.

Bi fun idanwo localhost, o ṣee ṣe ko fi ọwọ kan koodu Nẹtiwọọki gangan ati algorithm Nagle ko ṣiṣẹ, nitorinaa awọn ọran lairi lọ kuro nigbati alabara de Alvin nipasẹ localhost.

Nigbamii ti o ba rii ilosoke ninu lairi bi nọmba awọn ibeere fun iṣẹju keji dinku, algorithm Nagle yẹ ki o wa lori atokọ awọn ifura rẹ!

orisun: www.habr.com

Fi ọrọìwòye kun