Lebelo la polokelo le loketse etcd? Ha re botse fio

Lebelo la polokelo le loketse etcd? Ha re botse fio

Pale e khuts'oane ka fio le etcd

Ts'ebetso ea sehlopha jj haholo itšetlehile ka tshebetso ya polokelo ea eona. etcd e romela metrics tse ling ho Prometheusho fana ka lintlha tse lakatsehang tsa ts'ebetso ea polokelo. Mohlala, metric ea wal_fsync_duration_seconds. Litokomane tsa etcd li re: Hore polokelo e nkoe e potlakile ho lekana, karolo ea 99 lekholong ea metric ena e tlameha ho ba ka tlase ho 10ms. Haeba u rera ho tsamaisa sehlopha sa etcd mochining oa Linux mme o batla ho lekola hore na polokelo ea hau e potlakile ho lekana (mohlala, SSD), o ka e sebelisa. fio ke sesebelisoa se tsebahalang sa ho lekola ts'ebetso ea I/O. Etsa taelo e latelang, moo data-data e leng directory tlas'a sebaka sa polokelo:

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

U hloka feela ho sheba liphetho mme u hlahlobe hore na 99th percentile ea nako fdatasync ka tlase ho 10 ms. Haeba ho joalo, u na le polokelo e potlakileng haholo. Mohlala oa liphetho ke ona:

  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]

Lintlha

  • Re hlophisitse likhetho tsa --size le --bs bakeng sa maemo a rona a ikhethileng. Ho fumana sephetho se molemo ho tsoa ho fio, fana ka litekanyetso tsa hau. U ka li fumana hokae? Bala kamoo re ithutileng ho lokisa fio.
  • Nakong ea tlhahlobo, mojaro oa I / O o tsoa ho fio. Boemong ba 'nete, ho kanna ha ba le likopo tse ling tse tla tla polokelong ntle le tse amanang le wal_fsync_duration_seconds. Mojaro o eketsehileng o tla eketsa boleng ba wal_fsync_duration_seconds. Kahoo haeba 99th percentile e haufi le 10ms, polokelo ea hau e felloa ke lebelo.
  • Nka phetolelo fio eseng ka tlase ho 3.5 (tse fetileng ha li bonts'e lipersente tsa nako ea fdatasync).
  • Ka holimo ke karoloana feela ea liphetho ho tsoa ho fio.

Pale e telele ka fio le etcd

WAL ke eng etcd

Hangata li-database li sebelisoa ngola-pele log; etcd e sebelisa hape. Ha re na ho tšohla lintlha tsa ho ngola-pele (WAL) ka botlalo mona. Ho lekane hore re tsebe hore setho se seng le se seng sa sehlopha sa etcd se e boloka ka polokelo e tsitsitseng. etcd e ngola ts'ebetso e 'ngoe le e 'ngoe ea bohlokoa (joalo ka ntlafatso) ho WAL pele e e sebelisa lebenkeleng. Haeba e 'ngoe ea litho tsa polokelo e soahlamana' me e qala bocha lipakeng tsa linepe, e ka khutlisa lits'ebetso sebakeng sa heno ho tloha ha setšoantšo sa ho qetela sa WAL se hlaha.

Ha moreki a eketsa senotlolo lebenkeleng la bohlokoa-boleng kapa a ntlafatsa boleng ba senotlolo se teng, joalo-joalo o tlaleha ts'ebetso ho WAL, e leng faele e tloaelehileng polokelong e tsitsitseng. etcd E TLAMEHA ho ba le bonnete ba hore WAL ehlile e etsahetse pele o tsoela pele ka ts'ebetso. Ho Linux, mohala o le mong oa sistimi ha oa lekana bakeng sa sena. ngola, kaha ho ngolla ha sebele polokelong ea 'mele ho ka lieha. Mohlala, Linux e ka boloka sekeno sa WAL ka har'a cache mohopolong oa kernel (joalo ka cache ea leqephe) nako e itseng. 'Me e le hore data e ngoloe ka nepo ho polokelo e tsitsitseng, mohala oa tsamaiso ea fdatasync oa hlokahala ka mor'a ho ngola,' me joalo-joalo u e sebelisa feela (joalokaha u ka bona sephetho sa mosebetsi). strace, moo 8 e leng tlhaloso ea faele ea 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>

Ka bomalimabe, ho ngolla polokelo e tsitsitseng ha e etsahale hang-hang. Haeba mohala oa fdatasync o lieha, ts'ebetso ea sistimi ea etcd e tla senyeha. Litokomane tsa etcd li rehore polokelo e nkuoa e potlakile ka ho lekaneng haeba, ka 99th percentile, mehala ea fdatasync e nka tlase ho 10ms ho ngolla faele ea WAL. Ho na le metrics e meng ea bohlokoa bakeng sa polokelo, empa posong ena re bua ka metric ena feela.

Ho hakanya polokelo ka fio

Haeba o hloka ho lekola hore na polokelo ea hau e loketse joalo-joalo, sebelisa fio, sesebelisoa se tsebahalang haholo sa ho hlahloba mojaro oa I/O. E lokela ho hopoloa hore ts'ebetso ea disk e ka ba e fapaneng haholo: e lumellanang le e sa lumellaneng, lihlopha tse ngata tsa li-call tsa tsamaiso, joalo-joalo Ka lebaka leo, fio e thata haholo ho e sebelisa. E na le liparamente tse ngata, 'me metsoako e fapaneng ea boleng ba eona e hlahisa mesebetsi e mengata e fapaneng haholo ea I/O. Ho fumana lipalo tse lekaneng bakeng sa etcd, o lokela ho etsa bonnete ba hore teko ea ho ngola mojaro ho tloha fio e haufi ka hohle kamoo ho ka khonehang ho mojaro oa sebele ho tloha etcd ha u ngola lifaele tsa WAL.

Ka hona, fio e lokela, bonyane, e thehe moroalo oa letoto la sequential e ngolla faele, mongolo o mong le o mong o tla ba le mohala oa sistimi. ngolae lateloe ke mohala oa sistimi ea fdatasync. Sequential e ngolla fio e hloka khetho ea --rw=write. Bakeng sa fio ho sebelisa mokhoa oa ho ngola mohala ha o ngola, ho fapana le ngola, o lokela ho hlakisa --ioengine=sync parameter. Qetellong, bakeng sa ho letsetsa fdatasync ka mor'a mongolo o mong le o mong, o hloka ho eketsa --fdatasync=1 parameter. Likhetho tse ling tse peli mohlaleng ona (--size le -bs) li tobane le script. Karolong e latelang, re tla u bontša mokhoa oa ho li hlophisa.

Hobaneng fio le kamoo re ithutileng ho e theha

Ka poso ena, re hlalosa nyeoe ea 'nete. Re na le sehlopha Kubernetes v1.13 eo re e hlokometseng le Prometheus. etcd v3.2.24 e ile ea tšoaroa ka SSD. Etcd metrics e bonts'itse li-latency tsa fdatasync li phahame haholo, leha sehlopha se ne se sa etse letho. Li-metrics li ne li makatsa 'me re ne re sa tsebe hantle hore na li bolela'ng. Sehlopha se ne se e-na le mechini ea sebele, ho ne ho hlokahala ho utloisisa hore na bothata e ne e le bofe: ho li-SSD tsa 'mele kapa ka lera la virtualization. Ho feta moo, re ne re atisa ho etsa liphetoho ho hardware le tlhophiso ea software, 'me re ne re hloka mokhoa oa ho hlahloba liphello tsa bona. Re ka matha joalo-joalo ka tlhophiso e 'ngoe le e' ngoe mme ra sheba metrics ea Prometheus, empa hoo ke bothata bo boholo. Re ne re batla mokhoa o bonolo oa ho lekola tlhophiso e itseng. Re ne re batla ho hlahloba hore na re utloisisa metrics ea Prometheus ho tsoa ho etcd ka nepo.

Empa bakeng sa sena, mathata a mabeli a ne a tlameha ho rarolloa. Taba ea pele, mojaro oa I / O oo etcd o o etsa ha o ngolla WAL o shebahala joang? Ho sebelisoa mehala ea sistimi efe? Boholo ba lirekoto ke bo bokae? Ea bobeli, haeba re araba lipotso tsee, re ka hlahisa mosebetsi o tšoanang joang le fio? U se ke ua lebala hore fio ke sesebelisoa se tenyetsehang haholo se nang le likhetho tse ngata. Re rarolle mathata ka bobeli ka mokhoa o le mong - re sebelisa litaelo lsof и strace. lsof e thathamisa litlhaloso tsohle tsa lifaele tse sebelisoang ke ts'ebetso le lifaele tse amanang le tsona. Mme ka strace, o ka hlahloba ts'ebetso e seng e ntse e sebetsa, kapa oa qala ts'ebetso le ho e hlahloba. strace e hatisa mehala eohle ea sistimi ho tsoa ts'ebetsong e hlahlojoang (le lits'ebetso tsa eona tsa bana). Ea ho qetela ke ea bohlokoa haholo, kaha etcd e mpa e nka mokhoa o tšoanang.

Re qalile ho sebelisa strace ho hlahloba seva sa etcd bakeng sa Kubernetes ha ho ne ho se na moroalo sehlopheng. Re bone hore hoo e ka bang lirekoto tsohle tsa WAL li ne li lekana ka boholo: 2200–2400 byte. Ka hona, taelong e qalong ea poso, re hlalositse parameter -bs=2300 (bs e bolela boholo ba li-byte bakeng sa ho kena ha fio ka 'ngoe). Hlokomela hore boholo ba keno ea etcd bo itšetlehile ka mofuta oa etcd, kabo, boleng ba paramethara, joalo-joalo, 'me e ama nako ea fdatasync. Haeba u na le boemo bo ts'oanang, hlahloba lits'ebetso tsa hau tsa etcd ka strace ho fumana linomoro tse nepahetseng.

Ebe, ho fumana mohopolo o motle oa seo sistimi ea faele ea etcd e se etsang, re e qalile ka strace le likhetho tsa -ffttT. Kahoo re lekile ho hlahloba lits'ebetso tsa ngoana le ho rekota tlhahiso ea e mong le e mong oa bona faeleng e fapaneng, hape re fumana litlaleho tse qaqileng mabapi le qalo le nako ea mohala o mong le o mong oa sistimi. Re sebelisitse lsof ho netefatsa tlhahlobo ea rona ea tlhahiso ea strace le ho bona hore na ke tlhaloso efe ea faele e sebelisetsoang morero ofe. Kahoo ka thuso ea strace, liphello tse bontšitsoeng ka holimo li ile tsa fumanoa. Lipalopalo tsa nako tsa kamahanyo li netefalitse hore wal_fsync_duration_seconds ho tsoa ho etcd e lumellana le mehala ea fdatasync e nang le litlhaloso tsa faele ea WAL.

Re ile ra feta litokomaneng tsa fio mme ra khetha likhetho bakeng sa script ea rona e le hore fio e ka hlahisa mojaro o ts'oanang le etcd. Re boetse re hlahlobile mehala ea sistimi le nako ea eona ka ho sebelisa fio ho tloha strace, joalo ka joalo-joalo.

Re khethile boleng ba --size parameter ka hloko ho emela mojaro oa I/O ho tsoa ho fio. Tabeng ea rona, ena ke palo eohle ea li-byte tse ngotsoeng polokelong. Ho ile ha fumaneha hore e lekana ka kotloloho le palo ea mehala ea sistimi ea ho ngola (le fdatasync). Bakeng sa boleng bo itseng ba bs, palo ea mehala ea fdatasync = size/bs. Kaha re ne re thahasella peresente, re ne re tlameha ho ba le lisampole tse lekaneng ho netefatsa, 'me re ile ra bala hore 10 ^ 4 e tla ba e lekaneng bakeng sa rona (ke 22 mebibytes). Haeba --size e le nyane, li-outliers li ka hlaha (mohlala, mehala e mengata ea fdatasync e nka nako e telele ho feta e tloaelehileng mme e ama karolo ea 99).

E leke

Re u bontšitse mokhoa oa ho sebelisa fio le ho bona hore na polokelo e na le lebelo le lekaneng bakeng sa ts'ebetso e phahameng joalo-joalo. Hona joale u ka ikenela eona u sebelisa, ho etsa mohlala, mechine ea sebele e nang le polokelo ea SSD ho Cloud IBM.

Source: www.habr.com

Eketsa ka tlhaloso