FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Nykomling
|
Vi har fått en flaskhals vad gäller I/O på vår sajt och behöver därför se till att snabba upp diskarna. Vi i dagsläget vår databas på ett par linuxburkar där vi har master på en burk och sedan replikering mot slav. Mastern är en opteron och slaven är en Xeon-burk. Båda burkarna har varsin SATA-disk på 80 GB (7200 rpm). Våra databas är uppdelad i 6 databaser med ca 100 tabeller i varje. Alltsomallt uppgår databaserna till sammanlagt ca 7-8 GB i dagsläget. När vi har 5-6000 online så har diskarna svårt att hinna med och det går lite trögare så vi måste se till att åtgärda detta.
Nu är jag ingen hårdvarutekniker men efter vad jag läst mig till på nätet så bör det snabbaste och mest kostnadseffektiva alternativet vara att vi fixar 2 diskar på varje burk och kör med RAID0. Jag är medveten om att RAID0 innebär att om en disk kraschar så förlorar vi all data på den burken. Dock ser jag inte detta som något större problem då vi har har flera burkar och förlorar vi datan på ena burken finns det kvar på den andra burken. Så rimligtvis borde vi kunna köra RAID0 utan alltför stor risk även om vi kör med SATA-diskar. Så jag kontaktade de som hostar våra servrar och bad dom titta på kostnader för att nya diskar och att sätta upp RAID0 med 2 diskar på varje databasburk. Dock så fick jag då svaret att vi borde strunta i RAID och istället stoppa in en SCSI-disk i varje databasburk och att det skulle funka minst lika bra och vara minst lika snabbt om inte snabbare och dessutom vara betydligt driftsäkrare. Okej att det är skulle vara driftsäkrare det kan jag köpa men kan det verkligen vara så att en SCSI-disk (73GB, 15000 rpm, 300 MB/s) jämfört med att köra 2 SATA-diskar (7200 rpm) med RAID0? Det är det som är frågan. Jag har försökt söka runt på nätet för att hitta några bra jämförelser mellan SCSI-disk utan raid och SATA-diskar med RAID0 men jag har inte hittat några bra. Jag antar då också att jämförelsen bör vara gjord på burkar för databasanvändning för att ge ett bra svar på huruvida vi bör köra SATA-diskar eller SCSI-disk. Det vore väldigt intressant att höra från några som har lite erfarenheter kring detta. Är det verkligen så som vi fått rekommenderat till oss att en SCSI-disk skulle lösa våra I/O-problem minst lika bra som om vi satte in 2 SATA-diskar i varje burk och kör RAID0 på dom? För övrig information så är så gott som hela databasen indexerad och alla queries är optimerade så gott det går så vi kan inte göra så mycket mer i det avseendet. Vad gäller CPU-användningen på databasburkarna så jobbar de på ca 15-20% under högtryck så det är inte heller något problem. Varje burk har 2GB i ram vilket i och för sig kanske skulle kunna ökas på, men jag tror inte det skulle lösa problemet vi har med I/O i dagsläget. MySQL-databasen är konfiguererad efter alla konstens regler med cachning etc. Tror inte vi kan åstadkomma mer genom att justera konfigureringen. Tacksam för svar. ![]() |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Nykomling
|
Jag gissar att flaskhalsen för tillfället är vid inläsning (söktiden hos hårddiskarna). En SCSI-disk på 15k RPM är teoretiskt sett dubbelt så snabb på att söka pga den ökade rotationshastigheten.
Exakt hur mycket en 2-diskars RAID0 hjälper angående söktiden är svårt att säga, jag skulle gissa att det inte gör alltför mycket. En RAID1 (eller tom RAID10) kan vara fördelaktigare då det finns möjlighet att göra två olika sökningar samtidigt på varje speglat par av diskarna. Mjukvaruraid i Linux utnyttjar iaf detta, kör man med hårdvarukontroller är det olika mellan tillverkare. Min rekommendation är att ni trots allt funderar på om ni inte skulle stoppa in mer RAM i burkarna, iaf om det nu är läsning som är flaskhalsen. Tack vare att mer av databasen finns i RAM kommer antalet I/O-request mot disk minskas. |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Klarade millennium-buggen
|
En SCSI lösning tror jag blir bättre, men normalt är det kontrollerkortet som gör mycket. Så där bör man inte spara pengar för diskarna kan vara värdelösa utan just bra kontrollerkort.
Men accesstiden på SCSI är alltid lite snabbare än SATA |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Nykomling
|
Tack för era svar och synpunkter. Flaskhalsen är väl som jag ser det både vid inläsning och skrivning. Kanske behöver beskriva lite hur användningen av databasen ser ut. Ungefär lite drygt 15% av alla queries mot databasen är skrivningar. Många av dessa körs dock vid speciella tillfällen. Dels har vi en del nattliga uppdateringar men framförallt har vi körningar vid hela och halvtimmar då en större mängd update och inserts körs samlade och dessa skrivningar mot databasen får inte ta för lång tid. I dagsläget så halkar slaven efter lite vid dessa tillfällen och det tar lite för lång tid att köra även på mastern.
Vi optimerar för närvarande databaserna minst en gång i veckan vilket gör ganska stor skillnad på hur lång tid varje körning tar. I princip så är vi tvungna att optimera databasen väldigt ofta annars hade de dagliga körningarna i princip blivit okörbara efter ett tag. Orsaken till behovet av optimering är att vi rensar ganska mycket inaktuell data dagligen. Eventuellt kan vi nog passa på att stoppa i lite mer RAM också när vi ändå förbättrar disksituationen, men som sagt så tror jag att den stora flaskhalsen är just diskarna för närvarande. ![]() |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
1) Mer minne.
2) Rätt operativsystem (32bitars vs. 64bitars). 3) Rätt kompilerad/länkad/Strippad/version av databasen. 4) Rätt databasstruktur och index. Dubbellagring av data kan snabba upp frågor OTROLIGT mycket om man slipper dyrbara joins. Låt en fräsh extern utvecklare ta en titt på era databasfrågor och tabellstrukturer, det ÄR lätt att missa saker trots man är erfaren. 5) När man går ner på disk så ska man eleminera alla flaskhalsar man bara kan. Tyvärr har jag inga direkta råd angående SCSI vs. SATA. 6) Se till att ha vettiga nätverkskort och vettig övrig nätverksutrustning samt att ha gigabit. Kanske ett separat nät för databastrafiken? |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Nykomling
|
Köp ett kontrollerkort med rejäl skrivcache(+batteribackup) så kommer du märka enorm skillnad vid skrivning
![]() Kan rekommendera Areca (heter Tekram i Europa) och 3ware när det gäller SATA, LSI när det gäller SCSI. |
||
![]() |
![]() |
Svara |
|
|