Hafainganam-pitahirizana mety amin'ny sns? Andeha hanontany fio

Hafainganam-pitahirizana mety amin'ny sns? Andeha hanontany fio

Tantara fohy momba ny fio sy sns

Fampisehoana cluster sns miankina betsaka amin'ny fahombiazan'ny fitahirizana azy. etcd manondrana metrika sasany Prometheusmba hanomezana ny fampahalalana momba ny fitahirizana ilainao. Ohatra, ny metric wal_fsync_duration_seconds. Hoy ny antontan-taratasy sns: Mba hijerena haingana ny fitahirizana, ny 99 isan-jato amin'ity metrika ity dia tsy maintsy latsaky ny 10 ms. Raha mikasa ny hampandeha kluster etcd amin'ny milina Linux ianao ary te hanombantombana raha haingana ny fitahirizanao (toy ny SSD), dia azonao atao ny mampiasa fio dia fitaovana malaza amin'ny fitiliana ny asa I/O. Ampandehano ity baiko manaraka ity, izay misy ny angona-test ny lahatahiry eo ambanin'ny teboka fitahirizana:

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

Mila mijery ny valiny fotsiny ianao ary manamarina fa ny 99 isan-jato amin'ny faharetana fdatasync latsaky ny 10 ms. Raha eny, manana fitehirizana haingana ianao. Ity misy ohatra amin'ny vokatra:

  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]

-tsoratra

  • Namboarinay ny sandan'ny masontsivana -size sy -bs ho an'ny sehatra manokana. Mba hahazoana vokatra mahasoa avy amin'ny fio, ampidiro ny soatoavinao. Aiza no ahazoako azy ireo? Vakio, ny fomba nianaranay ny fio.
  • Mandritra ny fitsapana, ny entana I/O rehetra dia avy amin'ny fio. Amin'ny toe-javatra tena misy, dia mety hisy fangatahana fanoratana hafa hiditra ao amin'ny fitahirizana noho ireo mifandray amin'ny wal_fsync_duration_seconds. Ny entana fanampiny dia hampitombo ny sandan'ny wal_fsync_duration_seconds. Ka raha saika 99ms ny isan-jato faha-10 dia tsy ampy haingana ny fitahirizanao.
  • Raiso ny dikan-teny fio tsy latsaky ny 3.5 (ireo teo aloha dia tsy mampiseho isan-jato ny faharetan'ny fdatasync).
  • Sombiny amin'ny vokatra avy amin'ny fio ihany ny etsy ambony.

Tantara lava momba ny fio sy sns

Inona no atao hoe WAL amin'ny etcd

Matetika ny angon-drakitra no ampiasaina soratana mialoha; etcd koa mampiasa azy. Tsy hiresaka amin'ny antsipiriany eto ny diary fanoratana mialoha (WAL). Ampy ho antsika ny mahafantatra fa ny mpikambana tsirairay ao amin'ny cluster etcd dia mitazona azy amin'ny fitahirizana maharitra. etcd dia manoratra ny hetsika rehetra amin'ny mpivady manan-danja (toy ny fanavaozana) amin'ny WAL alohan'ny hampiharana azy ireo amin'ny fivarotana. Raha mianjera ny iray amin'ireo mpikambana ao amin'ny fitahirizana ary manomboka eo anelanelan'ny sary dia afaka mamerina ny fifampiraharahana eo an-toerana avy amin'ny sary farany amin'ny fampiasana ny votoatin'ny WAL.

Rehefa misy mpanjifa manampy fanalahidin'ny fivarotana sanda manan-danja na manavao ny sandan'ny fanalahidy efa misy, sns dia manoratra firaketana an'ity hetsika ity amin'ny WAL, izay rakitra mahazatra amin'ny fitahirizana maharitra. etcd TSY MAINTSY mahazo antoka tanteraka fa tena nisy tokoa ny fanoratana WAL alohan'ny hitohizan'ny fanodinana. Ao amin'ny Linux, tsy ampy ny antso an-tariby iray ho an'izany manoratra, satria mety ho tara ny fanoratana amin'ny fitahirizana ara-batana. Ohatra, Linux dia afaka mitahiry vonjimaika ny fidirana WAL ao anaty cache ao anaty fitadidiana kernel (toy ny cache pejy). Ary mba hanoratana marina ny angon-drakitra ao amin'ny fitahirizana maharitra dia ilaina ny antson'ny rafitra fdatasync aorian'ny firaketana, ary ny etcd dia mampiasa azy fotsiny (araka ny hita ho vokatry ny asa. strace, izay misy 8 dia famaritana rakitra 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>

Indrisy anefa, ny fanoratana amin'ny fitahirizana maharitra dia tsy eo no ho eo. Raha miadana ny antso fdatasync dia hiharatsy ny fahombiazan'ny rafitra sns. Hoy ny antontan-taratasy snsfa ny fitahirizana dia heverina ho haingana raha toa ka latsaky ny 99 ms ny 10 isan-jaton'ny antso fdatasync vao manoratra amin'ny rakitra WAL. Misy metrika fitahirizana mahasoa hafa, fa ity ihany no metrika resahina ato amin'ity lahatsoratra ity.

Fio

Raha mila manombana ianao raha mety amin'ny etcd ny fitahirizanao, ampiasao fio, fitaovana fitiliana entana I/O malaza be. Tokony ho tsaroana fa ny fiasan'ny kapila dia mety tsy mitovy: synchronous sy asynchronous, kilasy maro amin'ny antso an-tariby, sns. Vokatr'izany dia sarotra ny mampiasa fio. Manana mari-pamantarana maro izy io, ary ny fitambarana samihafa amin'ny sandany dia miteraka enta-mavesatra I/O tena samihafa. Mba hahazoana isa ampy ho an'ny etcd, dia tokony ho azonao antoka fa ny enta-manoratra andrana avy amin'ny fio dia akaiky araka izay azo atao amin'ny tena entana avy amin'ny etcd rehefa manoratra rakitra WAL.

Noho izany, ny fio dia tsy maintsy, fara fahakeliny, mamokatra enta-manoratra maromaro misesy amin'ny rakitra, ny sora-tanana tsirairay dia misy antso an-tariby. manoratraarahin'ny antson'ny rafitra fdatasync. Ho an'ny fanoratana fio misesy dia ilaina ny safidy --rw=write. Ka ny fio dia mampiasa ny antso rafitra fanoratana rehefa manoratra, fa tsy pwrite, dia ilaina ny mamaritra ny parameter –ioengine=sync. Farany, raha hiantso fdatasync aorian'ny fanoratana tsirairay dia mila ampidirinao ny --fdatasync=1 parameter. Ny safidy roa hafa amin'ity ohatra ity (--size sy -bs) dia scenario manokana. Ao amin'ny fizarana manaraka dia hasehontsika anao ny fomba fametrahana azy ireo.

Nahoana no fio sy ny fomba nianaranay ny fanamboarana azy

Amin'ity lahatsoratra ity dia mamaritra tranga tena izy. Nanana cluster izahay Kubernetes v1.13, izay nojerenay tamin'ny fampiasana Prometheus. etcd v3.2.24 dia nampiantrano SSD. Ny metrika Etcd dia nampiseho fahatarana be loatra ho an'ny fdatasync, na dia tsy nanao na inona na inona aza ny cluster. Hafahafa ny metrika ary tsy fantatray ny dikan'izany. Ny cluster dia misy milina virtoaly, ilaina ny mahatakatra ny olana: ao amin'ny SSD ara-batana na ao amin'ny layer virtualization. Fanampin'izay, nanao fanovana matetika tamin'ny fanefena fitaovana sy rindrambaiko izahay, ary nila fomba hanombanana ny vokatr'izy ireo. Afaka mihazakazaka etcd amin'ny configuration tsirairay isika ary mijery ny metrika Prometheus, saingy manahirana loatra izany. Nitady fomba tsotra kely izahay hanombanana tefi-trano manokana. Te-hijery izahay raha azonay tsara ny metrika Prometheus sns.

Saingy noho izany dia nilaina ny namaha olana roa. Voalohany, inona ny entana I/O amboarin'ny etcd rehefa manoratra amin'ny WAL? Inona no antso an-tariby ampiasaina? Inona ny haben'ny lahatsoratra? Faharoa, raha mamaly ireo fanontaniana ireo isika, ahoana no ahafahantsika mamerina asa mitovy amin'ny fio? Aza adino fa ny fio dia fitaovana tena mora azo amin'ny safidy maro. Namaha olana roa izahay tamin'ny fomba iray - mampiasa baiko lsof ΠΈ strace. lsof dia mampiseho ny famaritana rakitra rehetra ampiasain'ny dingana iray sy ny rakitra mifandraika amin'izy ireo. Ary amin'ny strace dia afaka mianatra dingana efa mandeha ianao na manomboka dingana iray ary mandalina izany. strace dia manonta ny antson'ny rafitra rehetra avy amin'ny dingana ianarana (sy ny fizotry ny zanany). Ity farany dia tena zava-dehibe, satria ny etcd dia manao fomba mitovy.

Ny zavatra voalohany nataonay dia ny fampiasana strace handinihana ny mpizara snsd ho an'ny Kubernetes rehefa tsy nisy entana tao amin'ny cluster. Hitanay fa saika mitovy habe avokoa ny rakitra WAL rehetra: 2200–2400 bytes. Noho izany, ao amin'ny baiko teo am-piandohan'ny lahatsoratra, dia nanondro ny parameter -bs=2300 (bs midika hoe ny haben'ny bytes isaky ny fio fio). Mariho fa ny haben'ny fidirana etcd dia miankina amin'ny version etcd, fandefasana, soatoavina parameter, sns ary misy fiantraikany amin'ny faharetan'ny fdatasync. Raha manana scenario mitovy amin'izany ianao dia diniho ny fizotranao sns amin'ny fampiasana strace hahitana ny isa marina.

Avy eo, mba hahazoana hevitra tsara momba ny ataon'ny rafi-drakitra etcd, dia nihazakazaka tamin'ny strace sy ny safidy -ffttT izahay. Noho izany dia nanandrana nandinika ny fizotry ny zaza izahay ary nandrakitra ny vokatra avy amin'ny tsirairay amin'izy ireo amin'ny rakitra misaraka, ary koa mahazo tatitra amin'ny antsipiriany momba ny fanombohana sy ny faharetan'ny antso rafitra tsirairay. Nampiasa lsof izahay mba hanamafisana ny famakafakana ny vokatra strace ary hijerena hoe iza amin'ireo mpamoritra rakitra no nampiasaina ho an'ny tanjona inona. Noho izany, tamin'ny fampiasana strace, nahazo ny vokatra aseho etsy ambony. Ny antontan'isan'ny fotoana fampifanarahana dia nanamafy fa ny metrikan'ny wal_fsync_duration_seconds avy amin'ny etcd dia mifanitsy amin'ny antso fdatasync miaraka amin'ny mpamoritra rakitra WAL.

Nandinika ny antontan-taratasin'ny fio sy ny masontsivana nofantenana ho an'ny scripty izahay mba hahatonga ny fio hamokatra entana mitovy amin'ny etcd. Nojerenay koa ny antson'ny rafitra sy ny faharetany tamin'ny alΓ lan'ny fampandehanana fio avy amin'ny strace, mitovy amin'ny etcd.

Nifidy tsara ny sandan'ny --size parameter izahay, izay maneho ny entana I/O manontolo amin'ny fio. Amin'ity tranga ity, ity no fitambaran'ny bytes voasoratra ao amin'ny fitahirizana. Hita fa mifanandrify mivantana amin'ny isan'ny antson'ny rafitra fanoratana (sy fdatasync). Ho an'ny sanda iray amin'ny bs, ny isan'ny antso amin'ny fdatasync = size/bs. Koa satria liana tamin'ny isan-jato izahay dia mila manana santionany ampy mba ho azo ianteherana, ary kajy izahay fa ny 10^4 dia ampy ho anay (22 mebibytes izany). Raha kely kokoa ny --size, dia mety hitranga ny fivoahana (ohatra, ny antso fdatasync maromaro dia maharitra kokoa noho ny mahazatra ary misy fiantraikany amin'ny isan-jato faha-99).

Andramo izany

Nasehonay ny fomba fampiasana fio ary fantaro raha haingana ny fitehirizana mba hamitana tsara ny etcd. Ankehitriny ianao dia afaka manandrana izany amin'ny fampiharana ny tenanao, mampiasa, ohatra, milina virtoaly miaraka amin'ny fitahirizana SSD IBM Cloud.

Source: www.habr.com

Add a comment