Halálcsilla... pontosabban DB-t építettünk

Valaha rég, egy messzi-messzi gépteremben...

Nehéz idők járnak a mérnökökre. A Karácsonyi forgalom erői elűzték őket titkos bázisukról, és könyörtelenül a riasztásukra törtek. Az infrások egy kis csapata új upgrade beépítésébe fogott a datacenter hidegfolyosóján. Az elvetemült Fekete Péntek hatására, aki megszállottan kutatja a gigabájtok nyomát, api hívások ezrei rajzanak ki az űrbe, hogy az üres meghajtók nyomára leljenek....

Na jó nem egészen így történt, de a lényeg az, hogy pár túlméretes DB-vel már nem bírtunk. Ezért aztán igyekeztünk megelőző csapást mérni mielőtt tényleg kifutunk a helyből. Az eredmény nem halálcsillag, de valami olyasmi ami már érdekes lehet nektek is.

A hardver erős közepes. Mindenből lehetne jobbat venni, de kb. ez az a pont ahol az árak meglódulnak és nem sokat nyernénk az ügyön. A gépen futó mysql sem skálázódik egy ponton túl, ami nagyjából ennek a vasnak felel meg. Hogy mi is a hardver?

Szerver: DL360 Gen9
CPU: 2x E5-2687W v4 (2x 12 mag @3GHz )
RAM: 256GB
Storage: 2x 600GB 15k SAS és SSD

Ez nem rossz hazai felhasználóknak, de szerverekből van jobb is. Az háttértár ami érdekesebb. SSD-t (fusionIO) használunk a DB alá, ami nem meglepő. Ez PCIe-es tárolót jelent, amit megpróbáltam pár programmal megfuttatni. Fontos megjegyezni, hogy ezek a programok nem mondanak el semmit arról, hogy hosszabb távon terhelés alatt mit teljesítenek ezek az SSD-k, mert csak kis adatmennyiséggel mérnek. De még ha 1 napik gyűrném akkor is messze lennék a valós használattól. Hogy mit értek valós felhasználás alatt? Valami ilyesmit, bár ez sem a legdurvábban használt fusionIO:

Active media: 100.00%
Rated PBW: 11.00 PB, 51.28% remaining
Lifetime data volumes:
Physical bytes written: 5,359,730,564,168,152
Physical bytes read : 4,945,339,612,065,888

Szóval lehet hogy az alábbi mérések alapján van gyorsabb meghajtó. Van olyan is ami jobban bírja a terhelést, de nem rossz darabok. Van amelyiket lassan 3 éve használjuk és amikor még nem voltak nagy méretű PCIe meghajtók. A tesztelt meghajtó friss, ami látszik a drive info-n. A képek nagyíthatóak.

Crystal Bench-ben láttam már jobb eredményt NVMe-től. De a fusionIO kártyák hamarabb kerültek piacra ha jól emlékszem és ebben a méretben nem volt anno alternatívájuk. Ma már persze van, de kicsit később leírom miért maradt mégis ez a kártya.

A HD Tach eredmény nagyon szép. Még hosszabb tesztelésnél sem esik az olvasási teljesítmény.

Az AS SSD Benchmarkban az egy szálas 4K kicsit alacsony. Mármint alacsonyabb, mint egy jóvágású NVMe. A késleltetése is kicsit magasabb, de azért 15-16 mikromásodperc nem rossz. Az IOPs ugyanezt tükrözi. Mysql-ben főként több instance mellett simán láttam 200MB/sec-es írást huzamosabb ideig. Nyugalmasabb időben ez csak 30-40MB/sec, de ahol most upgradeltünk ez ritka :)

Az ATTO Disk Benchmark maradt a végére. Nekem a legfontosabb a 16k write érték, mert ez az amit a mysql is használ az InnoDB-hez. Az olvasást meg cacheljük memóriában. Azért az írás, mert 256GB-ból azért eleget oda lehet adni buffernek, hogy ne kelljen sokat olvasni.

Most kérdezhetitek, hogy ez szép, de ilyet már máskor is postoltam, csak akkor Dell és NVMe volt a képen. Igen, azok új gépek voltak, most pedig bővítés történt. Valahogy így néz ki belülről és ha jobban megnézitek látható, hogy miért haláli a gép.

Ez a gép így erősebb az átlagosnál. 2x6 mag helyett 2x12. De az és mellé nagyobb tároló is jutott: 1x 3.2TB helyett 3x 3.2TB. Keverni nem akartuk, ezért lett még egy fusionIO SSD, nem pedig NVMe. Ráadásul ezeket összefogták a kollégák gyorsan RAID0-ba, hogy nehogy valamelyik lazsáljon.

$ cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 fioc1[2] fiob1[1] fioa1[0]
9374601216 blocks super 1.2 512k chunks

Persze ugyanezt ismételtük egy NVMe-s géppel is, mert mi van, ha belefutunk valami hardver vagy szoftver bugba, csak arról nincsenek (még?) méréseim.

Még van hozzászólás! Tovább