Ова страница је машински преведена. Прочитајте енглески оригинал. English

IBSurgeon библиотека

Брзо, жестоко и јефтино: сервер са довољно добрим перформансама за базу података малог бизниса за мање од 1000 US$

(c) Alexey Kovyazin, IBSurgeon, 21. септембар 2017 (последње ажурирање - 29. септембар 2017)

Лако је добити моћан сервер ако сте спремни да потрошите много $$$: постоје водећи произвођачи као што су Dell, HP, и многе мање познате компаније за хардвер, они ће радо продати моћну машину (обично, са испоруком за 4-6 недеља).

Међутим, новац је увек проблем, посебно за мала предузећа и стартапове, па постоји велика потражња за „довољно добрим" јефтиним решењима. Овај чланак описује практичан приступ за изградњу „довољно доброг" сервера за базе података са довољним перформансама за мала предузећа. Такође садржи прорачуне и линкове ка специфичним производима које препоручујемо.

Наша компанија (IBSurgeon) пружа услуге консалтинга и неге база података за Firebird базе, и видимо многе типове сервера (или, боље речено, рачунаре који се користе као сервери). Велики клијенти користе врхунске конфигурације са SAN-ом на SSD-овима, 350+Gb RAM-а и дуалним врхунским Xeon-има, али клијенти из малих и средњих предузећа користе мање моћне машине јер им не треба много рачунарске снаге и немају много новца.

Приметили смо да су многи сервери заправо обичне радне станице, и, најзанимљивије је то што раде прилично стабилно годинама и годинама. Постоје неке заиста егзотичне ствари, попут Windows XP-а на рачунару са 2Gb RAM-а (рачунар је направљен 2002. године!), али већина њих су само „довољно добра" самостално направљена хардверска решења.

Наравно, то је ствар статистике, и нико неће препоручити коришћење радне станице као сервера, али питање је: где је равнотежа између стабилности и трошкова? Да ли је добар приступ користити јефтин самостално направљен сервер у смислу вредности за новац? Шта можемо добити за USD$1000? Који су ризици повезани са нејефтиним хардвером?

Ко може бити заинтересован за сервер базе података испод usd$1000?

Размотримо следећу ситуацију: канцеларија са 20-25 радника, људи раде 7x5, величина базе података је око 50Gb. То је типична ситуација за мало предузеће које користи неки ERP или CRM или специфичну апликацију (на пример, систем за аутоматизацију стоматолошке ординације) за апликације малих предузећа засноване на Firebird-у.

Замислимо да компанија није преплањена новцем и желе да уштеде што је више могуће, без губитка поузданости, да би постигли довољно добре перформансе. Одговорна особа у компанији разуме да ће сав хардвер пре или касније отказати, и жели да смањи повезане ризике.

Какав сервер им је потребан за Firebird базу те величине и оптерећења? Према Firebird Hardware Guide, најкритичнији ресурс за базу података је диск I/O, затим RAM, и на крају - CPU (занимљиво је да када клијенти из малих и средњих предузећа купују сервере од великих произвођача, често бирају сервере са моћним CPU-има и спорим дисковима, вероватно због маркетиншких материјала који превише наглашавају важност CPU-а).

Дискови

Брз I/O значи да нам требају SSD дискови (енгл. solid state drives) јер је SSD краљ насумичних читања и уписа. Наравно, SSD није панацеја за базе података, али пружа заиста високе перформансе, и сада је прави избор за базе података.

SSD долази у 2 варијанте - дискови предузећа (енгл. enterprise grade) и потрошачки дискови (енгл. consumer-grade). Кључна разлика између њих је ресурс, грубо израчунат као број I/O операција које могу да изврше.

На пример, Samsung 850 Pro 256 Gb MZ-7KE256BW - потрошачки SSD (заснован на MLC технологији), има TBW (укупно уписаних бајтова) 150 петабајта, и DWPD (уписа на диск дневно) = 0.16. Или, једноставније, ресурс се може објаснити као 40Gb уписа сваког дана током 10 година.

Ажурирање: имали смо сугестију да су Samsung PM863a ($181.59) или SM863a ($249) поузданији од 850 Pro, али и даље приступачни - у суштини, за додатних $60 можемо добити бољу стабилност и неку врсту заштите од електричних удара.

Да ли је то много или не? Имамо тест сервер са потрошачким SSD-ом где покрећемо тестове оптерећења да симулирамо интензиван рад 100 конекција на бази од 60 Gb. Сваког дана се покрећу 3 таква теста, по 3 сата - то значи да ови тестови симулирају 9-часовни радни дан. Тестови се већ 2 године покрећу, и преостали ресурс (према фирмверу) је 54%.

Наравно, ~50% ресурса значи да диск треба заменити током следеће године… Да ли је то тако лоше? Сваких неколико година брзина SSD-а се повећава и цене падају: SSD у примеру има 6Gb/s и кошта $137, за 2-3 године биће 12G дискова за исту цену.

Амазонова цена од USD$124

SSD дискови предузећа су засновани на другој технологији (SLC), и могу приближно извршити 30x више операција од потрошачког SSD-а исте величине. Такође, коштају приближно 3x више од потрошачких SSD-ова. Питање је: да ли нам заиста треба 30x више I/O кругова за сервер малог предузећа за 3x цену?

Ако тражимо брзо и приступачно решење, веома је привлачно користити јефтине потрошачке SSD-ове и редовно их мењати (и пратити њихов ресурс помоћу фирмвера, наравно).

Ризици повезани са SSD-ом

Као адекватни људи, разумемо да потрошачки хардвер има мање ресурса и велике шансе да откаже, па морамо смањити те шансе. Како то можемо смањити?

Да бисмо смањили шансу за изненадни отказ хардвера, неопходно је користити 2 SSD-а за базу података, повезана у RAID1. RAID1 не значи да нам треба посебан RAID контролер, биће довољно користити RAID могућности модерних чипсета матичних плоча - у суштини, постоји једноставан RAID контролер без кеша.

Ажурирање: пошто јефтини RAID контролери на матичној плочи можда не подржавају TRIM функцију SSD-ова, да би се избегла деградација перформанси, препоручује се подешавање софтверског RAID-а, који оркестрира истовремене операције на софтверском нивоу.

Ако неће бити кеша, какве ће бити перформансе? Модерни SSD-ови, попут Samsung-а у примеру, имају уграђени кеш и веома паметне контролере - тако да су довољно брзи без наменских RAID контролера.

Наравно, неопходно је проверавати здравље дискова; обично фирмвер пружа довољно добру процену животног века дискова.

Резервне копије

Наравно, потребни су нам дискови за резервне копије. Најбољи избор ће бити пар SATA дискова од 2Tb сваки - на пример, Seagate SkyHawk 2TB Surveillance Hard Drive, са 5900 обртаја у минути.

Амазонова цена је $74,99

Потребна су нам 2 HDD-а јер дискови за резервне копије такође морају бити у RAID1, да би се пружила заштита од изненадног отказа хардвера. Ови дискови за резервне копије могу бити прилично спори, њихова главна сврха је да чувају резервне копије и пруже адекватну брзину секвенцијалног читања/уписа. Дискови од 5900 обртаја су спорији од 7200 обртаја, али је познато да су поузданији. Ова специфична серија дискова (Seagate SkyHawk) је дизајнирана за линеарне уписа: то је оно што нам треба за резервне копије.

Ризици за дискове за резервне копије

Ризик је исти као за SSD, и штитимо се од њега на исти начин: RAID1 и праћење. Требало би да постоји мала шанса да оба диска у RAID1 истовремено откажу.

Системски диск

Да ли нам треба посебан диск за оперативни систем? У најјефтинијој конфигурацији - не, биће довољно добро држати ОС и базу података на истом диску. То ће мало убрзати деградацију SSD-а, али не много - у нашем сценарију, требало би дефинитивно да издржи 3 године.

CPU

За Firebird сервер базе података боље је изабрати CPU са много језгара и што нижом фреквенцијом. Да, добро сте прочитали - нема потребе за CPU-има високе фреквенције за сервер базе података. Firebird (ако је правилно конфигурисан) користи сва језгра за нормалан рад, али их не оптерећује до 100%.

Постоје изузеци: неке операције одржавања (резервна копија и враћање) које имају користи од брзог CPU-а, и лоше написани SQL упити са погрешном употребом индекса - они троше 100% језгра, али то је јасан знак да је потребна оптимизација перформанси базе података. Уопштено, није могуће компензовати споре упите са врхунским CPU-има: чак и ако је CPU 3x бржи, спори упит ће и даље бити спор.

S druge strane, posedovanje više jezgara može da kompenzuje postojanje ovakvih upita koji troše CPU: sa brojem korisnika ispod 25 i sa 8 jezgara, nije velika šansa da će sva jezgra istovremeno biti zauzeta sporim upitima.

I, pošto tražimo jeftino rešenje, ograničeni smo na desktop CPU-ove - i, nažalost, na AMD čipove. U suštini, ako bi Intel mogao da obezbedi desktop procesor sa 8 jezgara po istoj ceni ili nešto višoj od AMD FX-8320E, mogli bismo da koristimo i Intel, ali trenutno ne vidim takvu opciju.

Ovaj AMD čip nije toliko moderan i nije toliko brz, ali ima 8 jezgara i jeftin je, tako da je optimalan izbor za naš brz i jeftin server.

Amazonova cena je USD$108

Rizici povezani sa desktop CPU-om

Koji je potencijalni rizik povezan sa CPU-om? Za niskofrekventne (tj. neoverklokovane) čipove sa adekvatnim hladnjakom, gotovo da nema rizika. Kada ste poslednji put čuli da je desktop CPU otkazao - 2003. godine? Naravno, serverski CPU-ovi su mnogo brži, ali mi tražimo dovoljno dobro rešenje.

Dobra je ideja pratiti opterećenje CPU-a i temperaturu kako biste sprečili povremena ponovna pokretanja.

RAM

Količina potrebnog RAM-a zavisi od veličine baze podataka i broja korisnika. U našem scenariju, veličina baze je 50Gb i imamo maksimalno 30 korisnika.

Maksimalna veličina koju Firebird može da potroši je veličina baze podataka (u tom slučaju će biti potpuno keširana u RAM-u) plus 200-300Mb po korisniku (u slučaju Firebird 2.5 SuperClassic). Dakle, idealna maksimalna veličina RAM-a je 64Gb, ali pošto želimo da uštedimo, i pošto imamo brzi SSD, možemo koristiti čak i samo 16Gb.

Neki korisnici u ovakvom scenariju rade dobro čak i sa 8Gb, ali 8Gb je prilično tesno: u tom slučaju, nijedna druga aplikacija ne bi trebalo da se koristi na istom serveru. 16Gb je preporučeni minimalni optimum.

Amazonova cena je USD$59.99 x 2 = $120

Rizici povezani sa RAM-om

RAM je podložniji kvarovima od CPU-ova, ali manje od diskova. Enterprise-grade RAM ima posebne mehanizme za smanjenje mogućnosti grešaka, poput provera pariteta. Kako možemo proceniti i smanjiti rizik od kvarova memorije?

Prvo, postoje metode za proveru memorijskih čipova, i ako takvi testovi budu uspešno prošli, RAM čipovi će raditi mnogo godina. Drugo, kada RAM otkaže, obično je to vrlo primetno: računar ili ima plavi ekran smrti ili kernel panic, ili česta ponovna pokretanja: svi takvi simptomi zahtevaju proveru i, u slučaju loših rezultata, zamenu RAM-a.

Matična ploča

Matična ploča je važan deo svakog računara. Srećom, moderne matične ploče za desktop računare su vrlo pouzdane, posebno one koje su izašle pre 4-5 godina - imaju sva neophodna ažuriranja i stabilne su. I - da, jeftine su.

Potrebna nam je matična ploča sa RAID podrškom, sa integrisanim video čipom i sa dovoljno SATA priključaka. Nešto poput ove:

ASUS M5A78L-M Plus/USB3 DDR3 HDMI DVI USB 3.0 760G MicroATX Motherboard

Amazonova cena je USD$74,99

Ima vrlo pozitivne recenzije i lako se konfiguriše za RAID1.

Desktop kućište

Potrebno nam je desktop kućište da povežemo sve računarske komponente zajedno, sa dovoljno napajanja. Nešto poput ovog: $76,82 http://amzn.to/2ydeYs1

UPS

Jedina stvar koja nije deo servera, ali bi trebalo da bude opremljena na svakom računaru sa važnim podacima unutra - neprekidni izvor napajanja (UPS).

UPS štiti računar od nestanka struje i fluktuacija. Prema našem iskustvu, strujni udar ili abnormalni gubitak napajanja računara je vodeći izvor korupcije baza podataka.

Nešto poput CyberPower CP1200AVR, za $117.97, trebalo bi da bude dovoljno dobro.

Ukupno

Kao rezultat, imamo ukupnu cenu svih računarskih komponenti i UPS-a = USD 855,27 - to je čak manje od USD1000, međutim, pre nego što ove komponente postanu radni računar, treba ih sastaviti, opremiti OS-om i testirati.

Stavka Cena Količina Ukupno
SSD Samsung 850 Pro 256 Gb MZ-7KE256BW $124,24 2 248,48
Seagate SkyHawk 2TB Surveillance Hard Drive 74,99 2 149,98
CPU AMD FX-8320E $86,02 1 86,02
RAM Corsair Vengeance 8GB $61,99 2 123,98
Matična ploča ASUS M5A78L-M Plus $57 1 57
Desktop kućište $69,99 1 69,99
CyberPower CP1200AVR $119.82 1 119,82
Ukupno 855,27

Sastavljanje servera

Da biste sastavili sve ove delove u radni server i instalirali tamo operativni sistem (preporučili bismo neku varijantu Linuxa, poput CentOS7+ ili Ubuntu Server 16+), sve ove komponente treba sastaviti/ispravno povezati.

Nije teško, samo zahteva odvijač i malo strpljenja i vremena da pažljivo pročitate uputstva i pogledate neke YouTube video snimke. Pre 10 godina gotovo svaki programer je mogao da sastavi računar od ovih delova, danas je drugačije, ali i dalje nije teško.

Šta ako ne želite da sastavljate server?

Postoji prečica - moguće je kupiti računar sa sličnom konfiguracijom koji gotovo odgovara našim potrebama i ugraditi tamo dodatne komponente (tj. diskove).

Preporučio bih da pogledate ovaj računar - prvobitno dizajniran kao gejming PC, ima 8-jezgarni CPU i 16Gb RAM-a, a košta samo USD$709.

Biće neophodno da ga opremite (otvorite kućište i povežete) sa parom SSD diskova (+$248,48), još jednim rezervnim diskom (+$74,99) i, naravno, UPS-om (+119.82). Ukupno će biti USD 1153 - to je više od cilja od $1000, uglavnom zbog grafičke kartice i lepog desktop kućišta. I dalje treba da konfigurišete RAID1 (u BIOS-u) i, naravno, instalirate tamo serverski OS umesto unapred instaliranog Windows 10 Home.

Ovaj pristup se može koristiti da se moćan desktop računar pretvori u server - jednostavno dodajte tamo redundantne SSD-ove i rezervne diskove.

U prošlosti su mnoga mala i srednja preduzeća i startapi koristili ovakve samostalno izgrađene servere, sada postoji trend korišćenja virtuelnih mašina u oblaku.

Kako se virtuelne mašine porede sa samostalno izgrađenim serverom?

Naravno, izgradnja i održavanje sopstvenog servera zahteva neke veštine (ne tako visoke kao što možda izgleda), tako da mnoge kompanije žele da se reše svih hardverskih servera (i, moguće, otpuste sistem administratora odgovornog za servere).

U sledećem članku ćemo razmotriti VM u oblaku kao server baze podataka za mala i srednja preduzeća.

Više članaka o performansama Firebird baze podataka:

  1. Firebird Hardware Guide
  2. Tuning 1.7Tb Firebird database
  3. Firebird Performance Optimization Service
  4. 45 Ways To Speed Up Firebird database
  5. Collection of optimized Firebird configuration files

Kontaktirajte nas

Slobodno postavite bilo koja pitanja: [email protected].

Zahvalnost

Veliko hvala ljudima koji su poslali sugestije i poboljšanja za ovaj članak:

  • Vlad Khorsun
  • Dmitri Kuzmenko
  • Pavel Zotov
  • Sergey Nikitin
  • Emil Mustea