Mokhoa oa ho hlahloba li-disk ka fio bakeng sa ts'ebetso e lekaneng bakeng sa etcd

Hlokomela. fetolela.: Sengoliloeng sena ke sephetho sa lipatlisiso tse nyane tse entsoeng ke baenjiniere ba IBM Cloud ho batla tharollo ea bothata ba nnete bo amanang le ts'ebetso ea database ea etcd. Mosebetsi o ts'oanang o ne o le oa bohlokoa ho rona, leha ho le joalo, mokhoa oa ho nahanisisa le liketso tsa bangoli e ka ba tse khahlisang maemong a pharaletseng.

Mokhoa oa ho hlahloba li-disk ka fio bakeng sa ts'ebetso e lekaneng bakeng sa etcd

Kakaretso e khuts'oane ea sengoloa kaofela: fio le etcd

Ts'ebetso ea sehlopha sa etcd e itšetlehile haholo ka lebelo la polokelo e ka tlase. etcd e romela metrics e fapaneng ea Prometheus ho lekola ts'ebetso. E 'ngoe ea tsona ke wal_fsync_duration_seconds. Litokomaneng tsa joalo-joalo e repolokelo eo e ka nkuoa e potlakile ho lekana haeba peresente ea 99 ea metric ena e sa fete 10 ms…

Haeba u nahana ho theha sehlopha sa etcd mochining oa Linux 'me u batla ho hlahloba hore na li-drive (tse kang li-SSD) li potlakile ho lekana, re khothaletsa ho sebelisa tlhahlobo e tsebahalang ea I/O e bitsoang. fio. Ho lekane ho tsamaisa taelo e latelang (directory test-data e tlameha ho behoa karolong e behiloeng ea drive e lekiloeng):

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

E sala feela ho sheba sephetho le ho hlahloba hore na 99th percentile e ea lekana fdatasync ka 10 ms. Haeba ho joalo, joale koloi ea hau e sebetsa ka potlako e lekaneng. Mona ke mohlala oa tlhahiso:

fsync/fdatasync/sync_file_range:
  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 tse 'maloa:

  1. Mohlala o ka holimo, re fetotse li-parameter --size и --bs bakeng sa nyeoe e itseng. Ho fumana sephetho se nang le moelelo ho fio, bolela litekanyetso tse loketseng nyeoe ea hau ea tšebeliso. Tsela ea ho li khetha e tla tšohloa ka tlase.
  2. Nakong ea tlhahlobo feela fio e kenya tsamaiso ea disk. Bophelong ba 'nete, ho ka etsahala hore lits'ebetso tse ling li ngolle disk (ntle le tse amanang le wal_fsync_duration_seconds). Moroalo ona o eketsehileng o ka eketseha wal_fsync_duration_seconds. Ka mantsoe a mang, haeba 99th percentile ho tloha tekong le fio, hanyenyane feela ka tlase ho 10 ms, ho na le monyetla o motle oa hore ts'ebetso ea polokelo ha ea lekana.
  3. Bakeng sa teko o tla hloka phetolelo fio eseng ka tlase ho 3.5, hobane liphetolelo tsa khale ha li kopanye liphetho fdatasync ka sebopeho sa li-percentile.
  4. Qetello e ka holimo ke karoloana feela ea sephetho se akaretsang fio.

Tse ling ka fio le etcd

Mantsoe a seng makae ka WALs etcd

Ka kakaretso, li-database li sebelisoa ho rema lifate ka potlako (ho rema lifate esale pele, WAL). etcd e boetse e ameha. Puisano ea WAL e feta boholo ba sengoloa sena, empa molemong oa rona, seo u hlokang ho se tseba ke hore setho se seng le se seng sa sehlopha sa etcd se boloka WAL polokelong e tsitsitseng. etcd e ngola lits'ebetso tsa polokelo ea boleng ba bohlokoa (joalo ka liapdeite) ho WAL pele e li etsa. Haeba node e soahlamana 'me e qala bocha lipakeng tsa linepe, joalo-joalo e ka khona ho khutlisa lits'ebetso ho tloha senepeng se fetileng ho ipapisitse le litaba tsa WAL.

Ka hona, nako le nako ha mofani a eketsa senotlolo lebenkeleng la KV kapa a ntlafatsa boleng ba senotlolo se teng, joalo-joalo o eketsa tlhaloso ea ts'ebetso ho WAL, e leng faele e tloaelehileng ka lebenkeleng le tsitsitseng. etcd E TSHWANETSE ho ba le bonnete ba 100% hore keno ya WAL e bolokilwe pele e tswela pele. Ho fihlela sena ho Linux, ha hoa lekana ho sebelisa mohala oa sistimi write, kaha ts'ebetso ea ho ngola ka boeona ho mecha ea litaba e ka 'na ea lieha. Mohlala, Linux e ka boloka kenyo ea WAL ka har'a cache ea kernel ea memori (mohlala, ka har'a cache ea leqephe) nako e itseng. Ho etsa bonnete ba hore data e ngoletsoe mecha ea litaba, mohala oa tsamaiso o tlameha ho etsoa ka mor'a ho ngola fdatasync - sena ke sona seo etcd e se etsang (joalo ka ha u bona tlhahisong e latelang strace; Mona 8 - Tlhaloso ea faele ea WAL):

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

Ka bomalimabe, ho ngolla polokelo e phehellang ho nka nako. Ts'ebetso ea nako e telele ea mehala ea fdatasync e ka ama ts'ebetso ea joalo-joalo. Litokomaneng tsa polokelo bontšitsoe, hore bakeng sa ts'ebetso e lekaneng ho hlokahala hore karolo ea 99 lekholong ea nako ea mehala eohle fdatasync ha u ngolla faele ea WAL e ne e le ka tlase ho 10 ms. Ho na le metrics e meng e amanang le polokelo, empa sengoloa sena se tla tsepamisa maikutlo ho eona.

Ho beha boleng ba polokelo ka fio

U ka lekola hore na polokelo e itseng e loketse ho sebelisoa le etcd u sebelisa sesebelisoa fio - setsebi se tsebahalang sa I/O. Hopola hore disk I / O e ka etsahala ka mekhoa e mengata e fapaneng: sync / async, lihlopha tse ngata tse fapaneng tsa syscall, joalo-joalo. Lehlakore le leng la coin ke lona fio ho thata haholo ho e sebelisa. Ts'ebeliso e na le liparamente tse ngata, 'me metsoako e fapaneng ea boleng ba eona e lebisa ho liphetho tse fapaneng ka ho felletseng. E le hore u fumane khakanyo e utloahalang bakeng sa etcd, u lokela ho etsa bonnete ba hore mojaro oa ho ngola o hlahisoang ke fio o haufi ka hohle kamoo ho ka khonehang ho file ea WAL ea etcd:

  • Sena se bolela hore e entsoeng fio mojaro bonyane e lokela ho ba letoto la lingoloa tse latellanang ho faele, moo mongolo o mong le o mong o nang le mohala oa sistimi. writee lateloa ke fdatasync.
  • Ho nolofalletsa ho ngola ka tatellano, o tlameha ho hlakisa folakha --rw=write.
  • hore fio ngola ka ho sebedisa mehala write (ho fapana le mehala e meng ea sistimi - mohlala, pwrite), sebelisa folakha --ioengine=sync.
  • Qetellong, folakha --fdatasync=1 etsa bonnete ba hore mong le e mong write e lokela ho ba fdatasync.
  • Li-parameter tse ling tse peli mohlaleng oa rona ke: --size и --bs - e ka fapana ho ea ka tšebeliso e khethehileng. Karolo e latelang e tla hlalosa tlhophiso ea bona.

Ke hobane'ng ha re khethile fio le hore na re ithutile joang ho e theha

Lengolo lena le tsoa ketsahalong ea 'nete eo re kopaneng le eona. Re ne re e-na le sehlopha ho Kubernetes v1.13 ka ho beha leihlo ho Prometheus. Li-SSD li ne li sebelisoa e le polokelo bakeng sa etcd v3.2.24. Etcd metrics e bonts'itse tieho e phahameng haholo fdatasync, leha sehlopha se ne se sa sebetse. Ho rona, litekanyetso tsena li ne li bonahala li belaetsa, 'me re ne re sa tsebe hantle hore na li emela eng. Ho phaella moo, sehlopha se ne se e-na le mechine ea sebele, kahoo ho ne ho sa khonehe ho bolela hore na ho lieha ho ne ho bakoa ke virtualization kapa SSD e ne e le molato.

Ho feta moo, re ile ra nahana ka liphetoho tse fapaneng tsa tlhophiso ea hardware le software, kahoo re ne re hloka mokhoa oa ho li hlahloba. Ehlile, ho ka khonahala ho tsamaisa etcd ho tlhophiso e 'ngoe le e' ngoe le ho sheba metrics e lumellanang ea Prometheus, empa seo se ka hloka boiteko bo boholo. Seo re neng re se hloka e ne e le mokhoa o bonolo oa ho lekola tlhophiso e itseng. Re ne re batla ho leka kutloisiso ea rona ea metrics ea Prometheus e tsoang etcd.

Sena se ne se hloka ho rarolla mathata a mabeli:

  • Taba ea pele, mojaro oa I / O o hlahisoang ke etcd ha o ngolla lifaele tsa WAL o shebahala joang? Ho sebelisoa mehala ea sistimi efe? Boholo ba liboloko tsa rekoto ke bokae?
  • Taba ea bobeli, ha re re re na le likarabo tsa lipotso tse ka holimo. Mokhoa oa ho hlahisa mojaro o tsamaellanang le fio? Ebile fio - sesebelisoa se bonolo haholo se nang le li-parameter tse ngata (sena se bonolo ho netefatsa, mohlala, mona - hoo e ka bang. fetolela.).

Re rarolotse mathata ka bobeli ka mokhoa o tšoanang o thehiloeng ho taelo lsof и strace:

  • Ka thuso ea lsof o ka sheba litlhaloso tsohle tsa lifaele tse sebelisoang ke ts'ebetso, hammoho le lifaele tseo ba buang ka tsona.
  • Ka thuso ea strace o ka sekaseka ts'ebetso e seng e ntse e sebetsa kapa oa tsamaisa ts'ebetso 'me oa e shebella. Taelo e bonts'a mehala eohle ea sistimi e entsoeng ke ts'ebetso ena mme, ha ho hlokahala, litloholo tsa eona. Ea ho qetela ke ea bohlokoa bakeng sa lits'ebetso tse ferekang, 'me joalo-joalo ke ts'ebetso e' ngoe e joalo.

Ntho ea pele eo re e entseng ke ho e sebelisa strace ho hlahloba seva sa etcd sehlopheng sa Kubernetes ha se ntse se sa sebetse.

Kahoo ho ile ha fumanoa hore li-block tsa WAL li arotsoe ka lihlopha tse ngata haholo, boholo ba bongata bo ne bo le ka har'a 2200-2400 bytes. Ke kahoo taelo e qalong ea sehlooho sena e sebelisang folakha --bs=2300 (bs ke boholo ba li-byte tsa boloko bo bong le bo bong fio).

Ka kopo hlokomela hore boholo ba li-block tsa joalo-joalo li ka fapana ho latela mofuta, phepelo, boleng ba paramente, jj. - e ama nako fdatasync. Haeba u na le ts'ebeliso e ts'oanang, sekaseka le strace lits'ebetso tsa hau tsa etcd ho fumana litekanyetso tsa morao-rao.

Ebe, molemong oa ho fumana mohopolo o hlakileng le o felletseng oa hore na etcd e sebetsa joang le sistimi ea faele, re e qalile ho tloha ka tlase. strace ka lifolakha -ffttT. Sena se entse hore ho khonehe ho hapa lits'ebetso tsa bana le ho ngola tlhahiso ea e 'ngoe le e' ngoe faeleng e fapaneng. Ho feta moo, ho ile ha fumanoa lintlha tse qaqileng mabapi le nako ea ho qala le nako ea mohala o mong le o mong oa sistimi.

Re boetse re sebelisitse taelo lsofho netefatsa kutlwisiso ya hao ya sephetho strace ho ea ka hore na tlhaloso ea faele e sebelisitsoe molemong ofe. Ke fihletse qeto strace, e tšoanang le e ka holimo. Liphetoho tsa lipalo-palo tse nang le linako tsa khokahano li netefalitse metric wal_fsync_duration_seconds ho tsoa ho mehala ea etcd fdatasync e nang le litlhaloso tsa faele ea WAL.

Ho hlahisa ka fio mojaro oa mosebetsi o ts'oanang le o tsoang ho etcd, litokomane tsa ts'ebeliso li ile tsa ithutoa 'me ho khethiloe mekhahlelo e loketseng mosebetsi oa rona. Re netefalitse hore mehala e nepahetseng ea sistimi e ntse e tsoela pele mme re netefalitse nako ea eona ka ho sebetsa fio ho tswa strace (joalokaha ho entsoe joalo ka joalo-joalo).

Ho ile ha lebisoa tlhokomelo e khethehileng ho fumana boleng ba parameter --size. E emela kakaretso ea I / O e hlahisoang ke ts'ebeliso ea fio. Tabeng ea rona, ena ke palo eohle ea li-byte tse ngotsoeng ho mecha ea litaba. E lekana ka kotloloho le palo ea mehala write (le fdatasync). Bakeng sa e khethehileng bs palo ea mehala fdatasync ka ho lekana size / bs.

Kaha re ne re thahasella peresente, re ne re batla hore palo ea lisampole e be kholo ho lekana hore e be ea bohlokoa ho latela lipalo. Mme a etsa qeto ya seo 10^4 (e lumellanang le boholo ba 22 MB) e tla lekana. Litekanyetso tse nyane tsa paramethara --size e fane ka lerata le hlakileng haholoanyane (mohlala, mehala fdatasync, e nkang nako e telele ho feta e tloaelehileng mme e ama 99th percentile).

Ho ho uena

Sehlooho se bontša mokhoa oa ho sebelisa fio motho a ka ahlola hore na mecha ea litaba e reretsoeng ho sebelisoa le etcd e potlakile ka ho lekaneng. Joale ho ho uena! U ka hlahloba mechini ea sebele e nang le polokelo e thehiloeng ho SSD ts'ebeletso Cloud IBM.

PS ho tsoa ho mofetoleli

Ka linyeoe tsa tšebeliso tse seng li entsoe fio Bakeng sa mesebetsi e meng, bona litokomane kapa ka kotloloho ho polokelo ea morero (ho na le tse ngata ho feta tse boletsoeng litokomaneng).

PPS ho tsoa ho mofetoleli

Bala hape ho blog ea rona:

Source: www.habr.com

Eketsa ka tlhaloso