Te tere rokiroki e tika ana mo etcd? Me patai ki a fio

Te tere rokiroki e tika ana mo etcd? Me patai ki a fio

He korero poto mo fio me etcd

Mahinga huinga etcd te nuinga ka whakawhirinaki ki te mahi o tana rokiroki. etcd kaweake etahi inenga ki Prometheuski te whakarato i nga korero mahi rokiroki e hiahiatia ana. Hei tauira, te inenga wal_fsync_duration_seconds. Ko nga tuhinga mo etcd e kii ana: Kia maharahia kia tere te rokiroki, me iti iho i te 99ms te 10 ōrau o tēnei ine. Mena kei te whakamahere koe ki te whakahaere i tetahi roopu etcd i runga i nga miihini Linux me te hiahia ki te arotake mena he tere to rokiroki (hei tauira SSD), ka taea e koe te whakamahi Tuhinga o mua he taputapu rongonui mo te whakamatautau i nga mahi I/O. Whakahaerehia te whakahau e whai ake nei, kei reira nga raraunga-whakamatautau te raarangi i raro i te waahi putunga rokiroki:

fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytest

Me titiro noa koe ki nga hua me te tirotiro ko te 99 ōrau o te roanga fdatasync iti iho i te 10 ms. Ki te penei, he tere to rokiroki. Anei he tauira o nga hua:

  sync (usec): min=534, max=15766, avg=1273.08, stdev=1084.70
  sync percentiles (usec):
   | 1.00th=[ 553], 5.00th=[ 578], 10.00th=[ 594], 20.00th=[ 627],
   | 30.00th=[ 709], 40.00th=[ 750], 50.00th=[ 783], 60.00th=[ 1549],
   | 70.00th=[ 1729], 80.00th=[ 1991], 90.00th=[ 2180], 95.00th=[ 2278],
   | 99.00th=[ 2376], 99.50th=[ 9634], 99.90th=[15795], 99.95th=[15795],
   | 99.99th=[15795]

Tuhipoka

  • Kua whakaritea e matou nga whiringa --rahi me --bs mo o maatau ahuatanga. Ki te whiwhi hua whai hua mai i te fio, whakarato i a koe ake uara. Kei hea te tiki i a raatau? Panui pehea matou i ako ai ki te whirihora i te fio.
  • I te wa o te whakamatautau, ka ahu mai nga kawenga I/O katoa i te fio. I roto i te ahuatanga o te ao, tera pea etahi atu tono tuhi ka uru mai ki roto i te rokiroki haunga era e pa ana ki te wal_fsync_duration_seconds. Ko te uta atu ka nui ake te uara o te wal_fsync_duration_seconds. Na, ki te tata te 99 ōrau ki te 10ms, kua pau te tere o to rokiroki.
  • Tangohia te putanga Tuhinga o mua kaua e heke iho i te 3.5 (ko nga mea o mua kaore e whakaatu i nga ōrau roanga fdatasync).
  • Kei runga ake nei he snippet o nga hua mai i te fio.

He korero roa mo fio me etcd

He aha te WAL i etcd

I te nuinga o te wa ka whakamahia nga papaunga raraunga tuhi-i mua rangitaki; Ka whakamahia ano hoki e etcd. E kore matou e korero mo te raarangi tuhi-amua (WAL) i konei. Me mohio noa tatou kei te pupuri tonu ia mema o te roopu etcd i roto i te rokiroki pumau. Ka tuhia e etcd ia mahinga uara-matua (penei i te whakahou) ki te WAL i mua i te tono ki te toa. Mena ka pakaru tetahi o nga mema rokiroki ka timata ano i waenga i nga whakaahua, ka taea e ia te whakaora i nga whakawhitinga mai i te waahanga whakamutunga na te ihirangi WAL.

Ki te taapirihia e te kiritaki he ki ki te toa uara-matua, ki te whakahou ranei i te uara o te taviri o naianei, etcd ka tuhi i te mahi i roto i te WAL, he konae kei roto i te rokiroki pumau. etcd ME tino mohio kua puta te urunga WAL i mua i te mahi tonu. I runga i te Linux, kotahi te waea punaha kaore e ranea mo tenei. tuhituhi, i te mea ka whakaroa pea te tuhi tuturu ki te rokiroki tinana. Hei tauira, ka penapena pea a Linux i tetahi urunga WAL ki roto i te keteroki i roto i te mahara kernel (penei i te keteroki wharangi) mo etahi wa. A kia tika ai te tuhi i nga raraunga ki te rokiroki pumau, ka hiahiatia te waea punaha fdatasync i muri i te tuhi, a ka whakamahia noa e etcd (ka kitea e koe i te hua o te mahi. aho, kei hea te 8 te kaiwhakaahua kōnae WAL):

21:23:09.894875 lseek(8, 0, SEEK_CUR)   = 12808 <0.000012>
21:23:09.894911 write(8, ". 20210220361223255266632$10 20103026"34"rn3fo"..., 2296) = 2296 <0.000130>
21:23:09.895041 fdatasync(8)            = 0 <0.008314>

Kia aroha mai, ko te tuhi ki te rokiroki tohe karekau e puta tonu. Mena he puhoi te waea fdatasync, ka mamae te mahi o te punaha etcd. Ko nga tuhinga mo etcd e kii anaka whakaarohia he tere te rokiroki mena, i te 99 ōrau, ka iti ake i te 10ms nga waea fdatasync ki te tuhi ki te konae WAL. Arā ano etahi atu inenga whaihua mo te rokiroki, engari i tenei pou e korero ana matou mo tenei inenga.

Te whakatau tata ki te rokiroki me te fio

Mena ka hiahia koe ki te arotake mena he pai to rokiroki mo te etcd, whakamahia te fio, he taputapu whakamatautau uta I/O tino rongonui. Kia maumahara he rereke nga mahi o te kōpae: he tukutahi me te tukutahi, he maha nga karaehe waea punaha, me era atu. Ko te mutunga, he uaua te whakamahi i te fio. He maha nga tawhā, a ko nga huinga rereke o o raatau uara he rereke nga mahi I/O. Ki te whiwhi whika tika mo etcd, me tino mohio koe ko te kawenga tuhi whakamatautau mai i te fio e tata ana ki te uta tika mai i etcd i te wa e tuhi ana i nga konae WAL.

No reira, me hanga e fio he kawenga o nga raupapa tuhi karapīpiti ki te konae, ko ia tuhi ka uru ki te waea punaha. tuhituhika whai i te waea pūnaha fdatasync. Ko te tuhi raupapa ki te fio e hiahia ana ki te --rw=write kōwhiringa. Mo te fio ki te whakamahi i te waea punaha tuhi i te wa e tuhi ana, kaua tuhi, me tohu koe i te --ioengine=sync tawhā. Hei whakamutunga, hei waea atu ki te fdatasync i muri i ia tuhi, me taapiri te --fdatasync=1 tawhā. Ko etahi atu whiringa e rua i roto i tenei tauira (--rahi me -bs) he tuhinga-motuhake. I te waahanga e whai ake nei, ka whakaatu matou ki a koe me pehea te whakarite.

He aha tonu te fio me te pehea i ako ai matou ki te whakarite

I roto i tenei pou, ka whakaahua matou i tetahi keehi pono. He tautau ta matou Kubernetes v1.13 i aroturukihia e matou me Prometheus. etcd v3.2.24 i whakahaerehia i runga i te SSD. I whakaatuhia e nga inenga etcd nga toroatanga fdatasync he tiketike rawa, ahakoa kaore he mahi a te tautau. He rerekee nga inenga, kaore matou i te tino mohio he aha te tikanga. Ko te tautau he miihini mariko, he mea tika kia mohio he aha te raru: i roto i nga SSD tinana, i te paparanga mariko ranei. I tua atu, he maha nga huringa o taatau ki te whirihoranga taputapu me te rorohiko, a ka hiahia matou ki te arotake i o raatau hua. Ka taea e taatau te whakahaere etcd i ia whirihoranga me te titiro ki nga inenga Prometheus, engari he raru nui tera. I rapu matou i tetahi huarahi tino ngawari ki te arotake i tetahi whirihoranga motuhake. I hiahia matou ki te tirotiro mena ka marama taatau ki nga inenga Prometheus mai i etcd tika.

Engari mo tenei, e rua nga raruraru me whakatika. Tuatahi, he aha te ahua o te uta I/O ka mahia etcd ina tuhi ana ki te WAL? He aha nga waea punaha e whakamahia ana? He aha te rahi o nga rekoata? Tuarua, ki te whakautua e tatou enei patai, me pehea e whakaputa ai i te taumahatanga rite ki te fio? Kaua e wareware he taputapu tino ngawari te fio me te maha o nga whiringa. I whakaotihia e matou nga raruraru e rua i te huarahi kotahi - ma te whakamahi i nga whakahau Tuhinga o mua и aho. Ka whakarārangihia e lsof nga kaiwhakaahua konae katoa e whakamahia ana e te tukanga me o raatau konae hono. A, ma te strace, ka taea e koe te tirotiro i tetahi tukanga e rere ana, ka timata ranei i tetahi tukanga ka tirotirohia. Ka taia e strace nga waea punaha katoa mai i te tukanga e tirohia ana (me ona tukanga tamaiti). He mea nui te mea whakamutunga, na te mea kei te tango noa te etcd i tetahi huarahi rite.

I te tuatahi i whakamahia e matou te strace ki te torotoro i te tūmau etcd mo Kubernetes i te mea karekau he uta ki te tautau. I kite matou tata katoa nga rekoata WAL he rite te rahi: 2200–2400 paita. Na reira, i roto i te whakahau i te timatanga o te pou, i tohua e matou te tawhā -bs=2300 (bs te tikanga o te rahi i roto i nga paita mo ia urunga fio). Kia mahara ko te rahi o te urunga etcd ka whakawhirinaki ki te putanga etcd, te tohatoha, nga uara tawhā, me etahi atu, ka pa ki te roanga fdatasync. Mena he ahua rite to ahua, tirohia o tikanga aha me te strace kia kitea nga tau tika.

Na, ki te whai whakaaro pai ki nga mahi a te punaha konae etcd, ka tiimata maatau me te strace me nga whiringa -ffttT. Na ka ngana matou ki te tirotiro i nga mahi a nga tamariki me te tuhi i nga putanga o ia o ratou ki tetahi konae motuhake, me te whiwhi korero mo te tiimata me te roa o ia waea punaha. I whakamahia e matou te lsof hei whakau i ta maatau tātaritanga o te putanga strace me te kite ko wai te kaiwhakaahua konae e whakamahia ana mo te aha. Na me te awhina o te strace, i whiwhi nga hua kua whakaatuhia i runga ake nei. I whakapumautia e nga tatauranga wa tukutahi ko te wal_fsync_duration_seconds mai i etcd he rite ki nga waea fdatasync me nga kaiwhakaahua konae WAL.

I haere matou ki roto i nga tuhinga mo te fio me te whiriwhiri i nga whiringa mo to maatau tuhinga kia pai ai te whakaputa a fio i tetahi kawenga rite ki te etcd. I tirohia ano e matou nga waea punaha me o raatau roa ma te whakahaere i te fio mai i te strace, he rite ki te etcd.

Kua ata whiriwhiria e matou te uara o te tawhā --rahi hei tohu i te kawenga I/O katoa mai i te fio. I a maatau, koinei te tapeke o nga paita kua tuhia ki te rokiroki. I puta he rite tonu ki te maha o nga waea tuhi (me te fdatasync) punaha. Mo tetahi uara o bs, te maha o nga waea fdatasync = rahi/bs. I te mea i pirangi matou ki te ōrau, me nui nga tauira kia mohio ai matou, a ka tatau matou ko te 10^4 ka nui ma matou (he 22 mebibytes). Mēnā he iti ake te --rahi, ka puta mai he rerekee (hei tauira, he maha nga waea fdatasync ka roa ake i o mua ka pa ki te 99 ōrau).

Whakamātauria koe

I whakaatu matou ki a koe me pehea te whakamahi i te fio me te kite mena he tere te rokiroki kia pai ai te mahi a etcd. Inaianei ka taea e koe te whakamatau maau ma te whakamahi, hei tauira, nga miihini mariko me te rokiroki SSD ki roto IBM Cloud.

Source: will.com

Tāpiri i te kōrero