Kwa nkhaniyi tidzagwiritsa ntchito seva yaing'ono ya HTTP ku Golang. Ma code onse a m'nkhaniyi angapezeke apa.
Ntchito yomwe ikuwunikidwa ndi seva ya HTTP yomwe imasankha Postgresql pa pempho lililonse. Kuphatikiza apo, pali Prometheus, node_exporter ndi Grafana kuti atolere ndikuwonetsa ma metrics ogwiritsira ntchito ndi dongosolo.
Latency ingafunike kukhathamiritsa kuwonjezera pa kusanthula, koma kutulutsa kumafunika kuunikanso. Mukamagwiritsa ntchito njira ya SRE SLO, pempho lochedwa limachokera kwa kasitomala kapena bizinesi, yoimiridwa ndi eni ake. Ndipo utumiki wathu udzakwaniritsa udindo umenewu kuyambira pachiyambi popanda zoikamo zilizonse!
Kukhazikitsa malo oyesera
Mothandizidwa ndi malo oyesera, tidzatha kuyika katundu woyezedwa pa dongosolo lathu. Kuti muwunike, deta yokhudzana ndi magwiridwe antchito a intaneti idzapangidwa.
Katundu wamalonda
Chilengedwe ichi chimagwiritsa ntchito Vegeta kuti mupange makonda a pempho la HTTP mpaka itayimitsidwa:
$ make load-test LOAD_TEST_RATE=50
echo "POST http://localhost:8080" | vegeta attack -body tests/fixtures/age_no_match.json -rate=50 -duration=0 | tee results.bin | vegeta report
Kuwona
Zogulitsa zidzagwiritsidwa ntchito panthawi yokonzekera. Kuphatikiza pa kugwiritsa ntchito (chiwerengero cha zopempha, kuyankha latency) ndi makina ogwiritsira ntchito (memory, CPU, IOPS) metrics, mbiri ya pulogalamu idzayendetsedwa kuti imvetsetse komwe kuli ndi zovuta komanso momwe CPU ikugwiritsidwira ntchito.
Mbiri
Kulemba mbiri ndi mtundu wa muyeso womwe umakulolani kuti muwone komwe nthawi ya CPU ikupita pomwe pulogalamu ikugwira ntchito. Zimakuthandizani kuti mudziwe komwe ndi nthawi yochuluka bwanji ya purosesa:
Izi zitha kugwiritsidwa ntchito pakuwunika kuti mumvetsetse nthawi ya CPU yomwe yawonongeka komanso ntchito yosafunikira yomwe ikuchitika. Go (pprof) amatha kupanga mbiri ndikuwona ngati ma graph amoto pogwiritsa ntchito zida zokhazikika. Ndilankhula zakugwiritsa ntchito kwawo ndikuwongolera kalozera pambuyo pake m'nkhaniyi.
Kuchita, kuyang'anitsitsa, kusanthula.
Tiyeni tiyese kuyesa. Tidzachita, kuyang'ana ndi kusanthula mpaka titakhutira ndi ntchitoyo. Tiyeni tisankhe mtengo wamtengo wapatali wochepa kuti tigwiritse ntchito kuti tipeze zotsatira za zomwe taziwona poyamba. Pa sitepe iliyonse yotsatira tidzawonjezera katunduyo ndi chinthu china cha makulitsidwe, osankhidwa ndi zosiyana. Kuyesa kulikonse kumachitidwa ndi kuchuluka kwa zopempha zomwe zasinthidwa: make load-test LOAD_TEST_RATE=X.
Zopempha 50 pa sekondi iliyonse
Samalani ma graph awiri apamwamba. Kumanzere kumanzere kukuwonetsa kuti ntchito yathu imapanga zopempha 50 pamphindikati (ikuganiza) ndipo kumanja kumanja kukuwonetsa kutalika kwa pempho lililonse. Magawo awiriwa amatithandiza kuyang'ana ndikusanthula ngati tili m'malire athu kapena ayi. Mzere wofiira pa graph HTTP Pempho Latency akuwonetsa SLO pa 60ms. Mzerewu ukuwonetsa kuti tili pansi pa nthawi yathu yoyankha.
Tiyeni tiwone mbali ya mtengo:
Zopempha 10000 pa sekondi iliyonse / zopempha 50 pa seva = ma seva 200 + 1
Potsatira malingaliro a Brendan Gregg, tiwerenga tchati kuchokera pamwamba mpaka pansi. Mzere uliwonse ukuwonetsa chimango cha stack (kuyitana kwa ntchito). Mzere woyamba ndi malo olowera mu pulogalamuyi, kholo la mafoni ena onse (mwanjira ina, mafoni ena onse adzakhala nawo pamndandanda wawo). Mzere wotsatira ndi wosiyana kale:
Ngati muyang'ana cholozera pa dzina la ntchito pa graph, nthawi yonse yomwe inali pa stack panthawi yokonza zolakwika idzawonetsedwa. Ntchito ya HTTPServe inalipo 65% ya nthawiyo, ntchito zina zothamanga runtime.mcall, mstart ΠΈ gc, zinatenga nthawi yotsalayo. Zosangalatsa: 5% ya nthawi yonse imagwiritsidwa ntchito pa mafunso a DNS:
Maadiresi omwe pulogalamuyi imayang'ana ndi a Postgresql. Dinani pa FindByAge:
Chochititsa chidwi n'chakuti, pulogalamuyi ikuwonetsa kuti, kwenikweni, pali magwero atatu akuluakulu omwe amawonjezera kuchedwa: kutsegula ndi kutseka kugwirizana, kupempha deta, ndi kulumikiza ku database. Grafu ikuwonetsa kuti zopempha za DNS, kutsegulira ndi kutseka kulumikizana kumatenga pafupifupi 13% ya nthawi yonse yophedwa.