Nco tseg. txhais.: Kab lus no yog cov txiaj ntsig ntawm kev tshawb fawb me me los ntawm IBM Cloud engineers hauv kev tshawb nrhiav kev daws teeb meem tiag tiag ntsig txog kev ua haujlwm ntawm lwm yam database. Ib txoj haujlwm zoo sib xws tau cuam tshuam rau peb, tab sis cov kev xav thiab kev ua ntawm cov kws sau ntawv tuaj yeem nthuav dav hauv cov ntsiab lus dav.

Cov ntsiab lus luv luv ntawm tag nrho cov kab lus: fio thiab lwm yam
Kev ua tau zoo ntawm ib pawg etcd yog nyob ntawm qhov ceev ntawm qhov chaw cia. Txhawm rau saib xyuas kev ua tau zoo, thiab lwm yam xa tawm ntau yam Prometheus metrics. Ib tug ntawm lawv yog wal_fsync_duration_seconds. Hauv lwm cov ntaub ntawv , qhov chaw khaws cia tuaj yeem suav tau nrawm yog tias 99 feem pua ntawm qhov ntsuas no tsis tshaj 10 ms ...
Yog tias koj tab tom txiav txim siab teeb tsa thiab lwm yam pawg ntawm Linux cov tshuab thiab xav sim seb puas muaj cov tsav tsheb (xws li SSDs) nrawm txaus, peb pom zoo kom siv I / O tester nrov hu ua . Cia li khiav cov lus txib hauv qab no (directory test-data yuav tsum tau nyob rau hauv lub mounted partition ntawm lub tsav raug kuaj):
fio --rw=write --ioengine=sync --fdatasync=1 --directory=test-data --size=22m --bs=2300 --name=mytestTxhua yam uas tseem tshuav yog saib cov zis thiab xyuas seb nws puas haum rau 99 feem pua ua 10ms. Yog tias muaj, ces koj tsav ceev txaus. Ntawm no yog ib qho piv txwv tso zis:
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]Ob peb sau ntawv:
- Hauv qhov piv txwv saum toj no peb tau kho cov kev txwv
--sizeи--bsrau ib rooj plaub tshwj xeeb. Kom tau txais txiaj ntsig tau los ntawmfio, qhia cov nqi uas tsim nyog rau koj cov ntaub ntawv siv. Yuav ua li cas xaiv lawv yuav tau tham hauv qab no. - Thaum kuaj xwb
fioloads lub disk subsystem. Hauv lub neej tiag tiag, nws zoo li lwm cov txheej txheem (tshwj tsis yog cov cuam tshuam nrogwal_fsync_duration_seconds). Xws li kev thauj khoom ntxiv tuaj yeem ua rau nce ntxivwal_fsync_duration_seconds. Hauv lwm lo lus, yog tias 99 feem pua tau txais los ntawm kev sim nrogfio, tsuas yog me ntsis tsawg dua 10 ms, muaj lub sijhawm zoo uas qhov kev cia khoom tsis txaus. - Rau qhov kev xeem koj yuav xav tau lub version
fiotsis qis dua 3.5, txij li cov laus versions tsis sau cov txiaj ntsigfdatasyncnyob rau hauv daim ntawv ntawm cov feem pua. - Cov lus xaus saum toj no tsuas yog ib qho me me ntawm qhov xaus tag nrho
fio.
Paub meej txog fio thiab lwm yam
Ob peb lo lus hais txog WALs thiab lwm yam
Feem ntau, databases siv (sau-ua ntej sau npe, WAL). etcd qhov no kuj siv tau. Kev sib tham ntawm WAL yog dhau ntawm qhov ntawm tsab xov xwm no, tab sis rau peb lub hom phiaj ntawm no yog qhov koj yuav tsum paub: Txhua tus tswv cuab thiab lwm yam khoom khaws WAL hauv kev khaws cia tsis tu ncua. etcd sau qee qhov haujlwm tseem ceeb hauv khw muag khoom (xws li hloov tshiab) rau WAL ua ntej ua tiav lawv. Yog hais tias ib qho ntawm qhov sib tsoo thiab rov pib dua ntawm snapshots, thiab lwm yam tuaj yeem rov qab ua lag luam txij li lub snapshot yav dhau los raws li cov ntsiab lus ntawm WAL.
Yog li, txhua zaus tus neeg siv khoom ntxiv tus yuam sij rau KV lub khw lossis hloov kho tus nqi ntawm tus yuam sij uas twb muaj lawm, thiab lwm yam ntxiv cov lus piav qhia ntawm kev ua haujlwm rau WAL, uas yog cov ntaub ntawv tsis tu ncua hauv kev khaws cia tsis tu ncua. etcd YUAV TSUM 100% kom paub tseeb tias WAL nkag tau raug cawm ua ntej ua haujlwm. Txhawm rau ua tiav qhov no ntawm Linux, nws tsis txaus siv lub kaw lus hu , txij li thaum sau ntawv nws tus kheej mus rau lub cev nruab nrab yuav ncua. Piv txwv li, Linux yuav khaws WAL nkag rau hauv cov ntsiav cache hauv nco (xws li nplooj ntawv cache) rau qee lub sijhawm. Txhawm rau kom ntseeg tau tias cov ntaub ntawv raug sau rau hauv xov xwm, kev hu xov tooj yuav tsum raug hu tom qab sau ntawv fdatasync - qhov no yog raws nraim li cas etcd ua (raws li tau pom hauv cov zis hauv qab no ; Ntawm no 8 - WAL cov ntaub ntawv tuav):
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> Hmoov tsis zoo, kev sau ntawv mus rau qhov tsis tu ncua yuav siv sijhawm qee lub sijhawm. Siv sijhawm ntev los ua kom tiav fdatasync hu tuaj yeem cuam tshuam lwm yam kev ua haujlwm. Nyob rau hauv cov ntaub ntawv rau lub repository tias kom ua tau zoo txaus nws yog qhov tsim nyog uas 99 feem pua ntawm lub sijhawm ntawm txhua qhov kev hu fdatasync Thaum sau rau ib daim ntawv, WAL tsawg dua 10 ms. Muaj lwm yam kev ntsuas ntsig txog kev khaws cia, tab sis tsab xov xwm no yuav tsom mus rau qhov no.
Kev ntsuas kev cia khoom siv fio
Koj tuaj yeem soj ntsuam seb qhov chaw cia khoom puas tsim nyog rau kev siv nrog lwm yam siv cov khoom siv hluav taws xob -Ib tug nrov I/O tester. Nco ntsoov tias disk I / O tuaj yeem tshwm sim hauv ntau txoj hauv kev: sync / async, ntau chav sib txawv ntawm kev hu xov tooj, thiab lwm yam. Lwm sab ntawm lub npib yog qhov ntawd fio nyuaj heev rau siv. Cov khoom siv hluav taws xob muaj ntau qhov tsis sib xws, thiab kev sib txawv ntawm lawv cov txiaj ntsig ua rau cov txiaj ntsig sib txawv. Yuav kom tau txais kev kwv yees tsim nyog rau lwm yam, koj yuav tsum xyuas kom meej tias cov ntawv sau tau tsim los ntawm fio zoo ib yam li qhov ua tau rau etcd's sau load rau WAL cov ntaub ntawv:
- Qhov no txhais tau tias cov generated
fiolub workload yuav tsum tsawg kawg yog ib tug series ntawm sequential sau rau ib cov ntaub ntawv, qhov twg txhua sau ua hauj lwm muaj ib tug system hu ua raws lifdatasync. - Txhawm rau ua kom cov ntaub ntawv ua ntu zus, koj yuav tsum qhia tus chij
--rw=write. - uas
fiosau siv huwrite(thiab tsis yog lwm qhov system hu - piv txwv li, ), siv tus chij--ioengine=sync. - Thaum kawg, tus chij
--fdatasync=1guarantees tias qab txhuawriteyuav tsumfdatasync. - Ob peb lwm yam parameter hauv peb piv txwv:
--sizeи--bs- tej zaum yuav txawv nyob ntawm qhov kev siv tshwj xeeb. Tshooj tom ntej yuav piav qhia txog yuav kho lawv li cas.
Vim li cas peb xaiv fio thiab peb kawm yuav ua li cas teeb tsa
Daim ntawv no los ntawm ib rooj plaub tiag tiag uas peb ntsib. Peb muaj pawg ntawm Kubernetes v1.13 nrog kev saib xyuas ntawm Prometheus. Solid state drives tau siv los ua cia rau lwm yam v3.2.24. etcd metrics pom latencies siab dhau lawm fdatasync, txawm tias thaum pawg tsis ua haujlwm. Peb pom cov metrics no muaj lus nug heev thiab peb tsis paub tseeb tias lawv sawv cev li cas. Tsis tas li ntawd, pawg muaj cov tshuab virtual, yog li nws tsis tuaj yeem qhia seb qhov kev ncua sijhawm yog vim virtualization lossis SSDs raug liam.
Tsis tas li ntawd, peb tau saib ntau yam kev hloov pauv rau kev kho vajtse thiab software teeb tsa, yog li peb xav tau txoj hauv kev los ntsuas lawv. Tau kawg, nws yuav muaj peev xwm khiav lwm yam hauv txhua qhov kev teeb tsa thiab saib cov kev ntsuas Prometheus, tab sis qhov no yuav xav tau kev siv zog loj. Peb xav tau ib txoj hauv kev yooj yim los ntsuas qhov kev teeb tsa tshwj xeeb. Peb xav sim peb txoj kev nkag siab ntawm Prometheus metrics los ntawm lwm yam.
Txhawm rau ua qhov no, ob qho teeb meem yuav tsum tau daws:
- Ua ntej, I/O load uas etcd generates thaum sau rau WAL cov ntaub ntawv zoo li cas? Qhov kev hu xov tooj siv dab tsi? Dab tsi yog qhov sau block loj?
- Qhov thib ob, cia peb hais tias peb muaj cov lus teb rau cov lus nug saum toj no. Yuav ua li cas reproduce tus coj load nrog
fio? Tom qab tag nrhofio- Cov khoom siv hloov tau yooj yim heev nrog ntau yam tsis muaj (qhov no yog ib qho yooj yim los xyuas, piv txwv li, - kwv yees. txhais.).
Peb tau daws ob qho teeb meem uas siv tib qho kev hais kom ua raws li txoj hauv kev и :
- Nrog kev pab los ntawm
lsofKoj tuaj yeem saib tag nrho cov ntaub ntawv piav qhia siv los ntawm cov txheej txheem, nrog rau cov ntaub ntawv lawv xa mus. - Nrog kev pab los ntawm
stracekoj tuaj yeem txheeb xyuas cov txheej txheem uas twb tau ua lawm lossis khiav cov txheej txheem thiab saib nws. Cov lus txib qhia tag nrho cov kab ke hu ua los ntawm cov txheej txheem no thiab, xaiv tau, nws cov xeeb ntxwv. Cov tom kawg yog qhov tseem ceeb rau cov txheej txheem uas yog forking, thiab lwm yam yog ib qho ntawm cov txheej txheem.
Thawj qhov peb tau ua yog siv strace mus kawm lwm yam server hauv Kubernetes pawg thaum nws tsis ua haujlwm.
Yog li, nws tau pom tias cov ntawv sau hauv WAL muaj ntau pawg, feem ntau ntawm lawv nyob hauv thaj tsam ntawm 2200-2400 bytes. Qhov no yog vim li cas cov lus txib thaum pib ntawm kab lus no siv tus chij --bs=2300 (bs - qhov loj me hauv bytes ntawm txhua qhov kaw kaw hauv fio).
Thov nco ntsoov tias lwm yam sau thaiv qhov ntau thiab tsawg yuav txawv nyob ntawm qhov version, kev xa tawm, qhov ntsuas qhov tseem ceeb, thiab lwm yam. - qhov no cuam tshuam rau lub sijhawm fdatasync. Yog tias koj muaj cov ntaub ntawv siv zoo sib xws, txheeb xyuas nrog strace koj cov txheej txheem etcd kom tau txais cov txiaj ntsig tseeb.
Tom qab ntawd, kom tau txais kev nkag siab meej thiab kev nkag siab txog li cas etcd ua haujlwm nrog cov ntaub ntawv kaw lus, peb tau khiav nws los ntawm hauv qab strace nrog chij -ffttT. Qhov no ua rau nws tuaj yeem ntes tus menyuam cov txheej txheem thiab sau cov ntawv tso tawm ntawm txhua tus mus rau ib daim ntawv cais. Tsis tas li ntawd, cov ncauj lus kom ntxaws tau txais txog lub sijhawm pib thiab lub sijhawm ntawm txhua qhov kev hu xov tooj.
Peb kuj siv cov lus txib lsofkom paub meej tias koj nkag siab txog cov zis strace nyob rau hauv cov nqe lus ntawm cov ntaub ntawv descriptor tau siv rau lub hom phiaj twg. Qhov tshwm sim yog strace, zoo ib yam li cov saum toj no. Statistical manipulations nrog synchronization lub sij hawm tau lees tias qhov metric wal_fsync_duration_seconds los ntawm lwm yam kev sib tw hu fdatasync nrog WAL cov ntaub ntawv piav qhia.
Tsim los siv fio workload zoo ib yam li cov load los ntawm lwm yam, cov ntaub ntawv siv hluav taws xob tau kawm thiab tsis haum rau peb txoj haujlwm raug xaiv. Peb tau ua kom paub tseeb tias qhov kev hu xov tooj raug koom nrog thiab lees paub lawv lub sijhawm los ntawm kev khiav haujlwm fio los ntawm strace (raws li tau ua nyob rau hauv rooj plaub ntawm etcd).
Kev saib xyuas tshwj xeeb tau them rau kev txiav txim siab tus nqi ntawm qhov ntsuas --size. Nws sawv cev tag nrho I / O load tsim los ntawm fio utility. Hauv peb cov ntaub ntawv, qhov no yog tag nrho cov lej ntawm bytes sau rau hauv xov xwm. Nws yog ncaj qha proportional rau tus xov tooj hu write (thiab fdatasync). Rau ib yam bs tus xov tooj hu fdatasync sib npaug size / bs.
Vim peb txaus siab rau feem pua , peb nrhiav kom paub tseeb tias tus naj npawb ntawm cov qauv yog qhov loj txaus rau qhov tseem ceeb. Thiab lawv tau txiav txim siab li ntawd 10^4 (uas sib raug rau qhov loj ntawm 22 MB) yuav txaus. Cov nqi qis dua --size ua suab nrov nrov (piv txwv li, hu fdatasync, uas siv sijhawm ntev dua li niaj zaus thiab cuam tshuam rau 99th feem pua).
Nws nyob ntawm koj
Kab lus qhia yuav ua li cas siv fio koj tuaj yeem soj ntsuam seb cov xov xwm xav tau siv nrog lwm yam yog nrawm txaus. Tam sim no nws nyob ntawm koj! Koj tuaj yeem tshawb xyuas cov tshuab virtual nrog SSD-raws li kev cia hauv kev pabcuam .
PS los ntawm tus txhais lus
Nrog npaj ua piv txwv ntawm kev siv fio rau kev daws lwm yam teeb meem tuaj yeem pom hauv los yog ncaj qha rau (Muaj ntau yam ntawm lawv muaj tshaj li hais hauv cov ntaub ntawv).
PPS los ntawm tus txhais lus
Nyeem kuj ntawm peb blog:
- «»;
- «»;
- «".
Tau qhov twg los: www.hab.com
