Monga
Tsiku lina ndinadzuka ndikupeza imelo yokhumudwa chifukwa chochedwetsa ndi Alvin, zomwe tinkafuna kuziyambitsa posachedwa. Makamaka, kasitomala adakumana ndi 99th percentile latency m'chigawo cha 50ms, pamwamba pa bajeti yathu yochedwa. Izi zinali zodabwitsa pamene ndimayesa ntchitoyo mozama, makamaka pa latency, yomwe ndi madandaulo wamba.
Ndisanayike Alvin kuyesa, ndinayesa zoyesa zambiri pa mafunso a 40k pamphindi (QPS), zonse zikuwonetsa latency zosakwana 10ms. Ndinali wokonzeka kulengeza kuti sindinagwirizane ndi zotsatira zawo. Koma ndikuyang'ananso kalatayo, ndidawona china chatsopano: sindinayese ndendende zomwe adazitchula, QPS yawo inali yotsika kwambiri kuposa yanga. Ndinayesa pa 40k QPS, koma iwo okha pa 1k. Ndidayesanso kuyesa kwina, nthawi ino ndi QPS yotsika, kuti ndingowasangalatsa.
Popeza ndikulemba mabulogu za izi, mwina mwazindikira kale kuti manambala awo anali olondola. Ndinayesa kasitomala wanga mobwerezabwereza ndi zotsatira zofanana: zopempha zochepa sizimangowonjezera latency, koma zimawonjezera chiwerengero cha zopempha ndi latency yaikulu kuposa 10ms. Mwa kuyankhula kwina, ngati pa 40k QPS panali zopempha za 50 pamphindi pamwamba pa 50ms, ndiye pa 1k QPS panali zopempha 100 pamwamba pa 50ms sekondi iliyonse. Zodabwitsa!
Kuchepetsa kusaka
Mukakumana ndi vuto la latency mu dongosolo logawidwa ndi zigawo zambiri, sitepe yoyamba ndiyo kupanga mndandanda wafupipafupi wa okayikira. Tiyeni tifufuze mozama muzomangamanga za Alvin:
Malo abwino oyambira ndi mndandanda wa kusintha kwa I / O komwe kunachitika (ma foni a pa netiweki / kuyang'ana kwa disk, ndi zina). Tiyeni tiyese kudziwa komwe kuchedwa kuli. Kupatula I / O yodziwikiratu ndi kasitomala, Alvin amatenga gawo lowonjezera: amapeza sitolo ya data. Komabe, kusungirako uku kumagwira ntchito m'gulu lomwelo monga Alvin, kotero kuti latency iyenera kukhala yochepa kusiyana ndi kasitomala. Choncho, mndandanda wa okayikira:
- Kuyimba foni kuchokera kwa kasitomala kupita kwa Alvin.
- Imbani foni kuchokera kwa Alvin kupita ku data store.
- Sakani pa disk mu data store.
- Kuyimba foni kuchokera kumalo osungiramo data kupita kwa Alvin.
- Kuyimba foni kwa Alvin kupita kwa kasitomala.
Tiyeni tiyese kumvetsetsa mfundo zina.
Kusungirako deta kulibe chochita nazo
Chinthu choyamba chomwe ndidachita ndikusinthira Alvin kukhala seva ya ping-ping yomwe simayankha zopempha. Ikalandira pempho, imabweza yankho lopanda kanthu. Ngati latency ikuchepa, ndiye kuti cholakwika mu Alvin kapena kusungitsa malo osungiramo data sichinamveke. Pakuyesa koyamba timapeza graph iyi:
Monga mukuwonera, palibe kusintha mukamagwiritsa ntchito seva ya ping-ping. Izi zikutanthauza kuti malo osungiramo data samachulukitsa latency, ndipo mndandanda wa okayikira wadulidwa pakati:
- Kuyimba foni kuchokera kwa kasitomala kupita kwa Alvin.
- Kuyimba foni kwa Alvin kupita kwa kasitomala.
Zabwino! Mndandandawu ukucheperachepera. Ndinkaganiza kuti ndatsala pang'ono kuzindikira chifukwa chake.
gRPC
Ino ndi nthawi yoti ndikuwonetseni wosewera watsopano: gRPC
zokongoletsedwa bwino komanso zogwiritsidwa ntchito kwambiri, iyi inali nthawi yanga yoyamba kuzigwiritsa ntchito pamakina akukula uku ndipo ndimayembekezera kuti kukhazikitsidwa kwanga kudzakhala kocheperako - kunena pang'ono.
kupezeka gRPC
pagululi zidabweretsa funso latsopano: mwina ndikukhazikitsa kwanga kapena ine ndekha gRPC
kumayambitsa vuto la latency? Kuwonjeza wokayikira watsopano pamndandanda:
- Wothandizira amayimbira laibulale
gRPC
- Library
gRPC
imapanga foni yamtaneti ku library pa kasitomalagRPC
pa seva - Library
gRPC
kulumikizana ndi Alvin (palibe ntchito ngati seva ya ping-pong)
Kuti ndikupatseni lingaliro la momwe code imawonekera, kasitomala wanga / Alvin kukhazikitsa sikusiyana kwambiri ndi kasitomala-seva.
Zindikirani: Mndandanda womwe uli pamwambawu ndi wosavuta chifukwa
gRPC
zimapangitsa kuti zitheke kugwiritsa ntchito yanu (chitsanzo?) chopangira ulusi, momwe mulingo wakupha umalumikizidwagRPC
ndi kukhazikitsa kwa ogwiritsa ntchito. Pofuna kuphweka, tidzamamatira ku chitsanzo ichi.
Kufotokozera kudzakonza zonse
Nditadutsa m'malo ogulitsira, ndimaganiza kuti ndatsala pang'ono kumaliza: "Tsopano ndi zophweka! Tiyeni tigwiritse ntchito mbiriyo ndikuwona komwe kuchedwerako kumachitika. β Ine
Ndinatenga mbiri zinayi: ndi QPS yapamwamba (low latency) ndi seva ya ping-pong yokhala ndi QPS yochepa (high latency), onse kumbali ya kasitomala komanso kumbali ya seva. Ndipo pokhapokha, ndinatenganso chitsanzo cha purosesa. Poyerekeza mbiri, nthawi zambiri ndimayang'ana ma call osadziwika bwino. Mwachitsanzo, kumbali yoyipa yokhala ndi latency yayikulu pali masiwichi ochulukirapo (nthawi 10 kapena kupitilira apo). Koma kwa ine, kuchuluka kwa masinthidwe amtunduwu kunali kofanana. Ndinadabwa kuona kuti panalibe chilichonse chochititsa chidwi kumeneko.
Zowonjezera Debugging
Ndinali wosimidwa. Sindinadziwe kuti ndi zida ziti zomwe ndingagwiritse ntchito, ndipo dongosolo langa lotsatira linali kubwereza zoyesererazo mosiyanasiyana m'malo mozindikira vutolo.
Zingatani Zitati
Ndinali ndi nkhawa za 50ms latency kuyambira pachiyambi. Iyi ndi nthawi yayikulu kwambiri. Ndinaganiza zodula ma code mpaka nditazindikira kuti ndi gawo liti lomwe likuyambitsa cholakwikacho. Kenako panabwera kuyesa komwe kunathandiza.
Monga mwachizolowezi, poyang'ana kumbuyo zikuwoneka kuti zonse zinali zoonekeratu. Ndinayika kasitomala pamakina omwewo monga Alvin - ndikutumiza pempho kwa localhost
. Ndipo kuwonjezeka kwa latency kwapita!
Chinachake chalakwika ndi netiweki.
Kuphunzira luso la injiniya pa intaneti
Ndiyenera kuvomereza: chidziwitso changa chaukadaulo wapaintaneti ndi choyipa, makamaka poganizira kuti ndimagwira nawo ntchito tsiku lililonse. Koma netiweki inali yokayikira kwambiri, ndipo ndimayenera kuphunzira momwe ndingathetsere vutoli.
Mwamwayi, intaneti imakonda omwe akufuna kuphunzira. Kuphatikizika kwa ping ndi tracert kumawoneka ngati koyambira kokwanira kuthetsa zovuta zoyendera ma netiweki.
Choyamba, ndinayambitsa
Kenako ndinayesa
Chifukwa chake sinali khodi yanga, kukhazikitsa kwa gRPC, kapena netiweki yomwe imayambitsa kuchedwa. Ndinayamba kuda nkhawa kuti sindingamvetse izi.
Tsopano tili pa OS yanji
gRPC
amagwiritsidwa ntchito kwambiri pa Linux, koma zachilendo pa Windows. Ndinaganiza zoyesa kuyesa, komwe kunathandiza: Ndinapanga makina enieni a Linux, ndinapanga Alvin kwa Linux, ndikuyiyika.
Ndipo izi ndi zomwe zidachitika: seva ya Linux ping-pong inalibe kuchedwa kofanana ndi Windows host host yofananira, ngakhale gwero la data silinali losiyana. Zikuoneka kuti vuto lili mu kukhazikitsa gRPC kwa Windows.
Algorithm ya Nagle
Nthawi yonseyi ndimaganiza kuti ndikuphonya mbendera gRPC
. Tsopano ndikumvetsa chomwe chiri kwenikweni gRPC
Windows mbendera ikusowa. Ndinapeza laibulale yamkati ya RPC yomwe ndinali ndi chidaliro kuti idzagwira ntchito bwino pamabendera onse
Pafupifupi Zachitika: Ndinayamba kuchotsa mbendera zowonjezeredwa imodzi imodzi mpaka kubwereranso kubwerera kuti ndidziwe chomwe chinayambitsa. Zinali zoipa
gRPC
mbendera iyi idakhazikitsidwa pakukhazikitsa kwa Linux kwa soketi za TCP, koma osati pa Windows. Ine ndine uyu
Pomaliza
Kuchedwa kwapamwamba pa QPS yotsika kudachitika chifukwa cha kukhathamiritsa kwa OS. Poyang'ana m'mbuyo, kufotokozera sikunapeze latency chifukwa kunachitika mu kernel mode osati mu
Ponena za kuyesa komweko, mwina sikunakhudze nambala yeniyeni yapaintaneti ndipo ma algorithm a Nagle sanayendetse, chifukwa chake zovuta za latency zidachoka pomwe kasitomala adafika ku Alvin kudzera pagulu.
Nthawi ina mukadzawona kuwonjezeka kwa latency pomwe kuchuluka kwa zopempha pamphindikati kucheperachepera, algorithm ya Nagle iyenera kukhala pamndandanda wanu wa omwe akukayikira!
Source: www.habr.com