Mijn huidige server(collocatie) heeft onvoldoende capaciteit voor mysql. Cpu verbruik is vaak meer dan 80%, en veel queries zijn te traag. De server fungeert zowel als webserver als mysql server.
Gegevens huidige server(windows server 2003 64 bit):
- Supermicro SuperServer 6015B-T+V
- Raid kaart: Areca ARC-12104 4 x SATAII Raidkaart PCI-e
- Schijven: 4 x 320GB SATA-II 24x7 3.5IN 8.5MS 7200RPM 16MB 3GB/S
- 2 x Xeon E5345 Quadcore 2.33GHZ FSB13338 MB Cache
- 28 qualified 667 MHz FB-DIMM
Het os staat op 2 schijven met raid 1, en alle Mysql data staat op een andere raid 1 met 2 schuiven.
Belasting
- Per dag 10 k a 20 k bezoekers
- Per dag moet anderhalf miljoen producten(=grootste tabel) worden gesynchroniseerd
- Elke dag worden worden duizenden reguliere expressies vele malen uitgevoerd op de anderhalf miljoen producten
Ik verwacht dat de belasting in de toekomst zal groeien.
Ik denk dat ik een krachtige database server moet kopen, en mijn huidige server alleen als webserver moet gebruiken(ps. wat is de snelste verbinding tussen een web- en database server? Crosskabel?). Graag wil ik fors meer capaciteit (zowel meer i.o als cpu), zodat ik een paar jaar van de capaciteit problemen af ben.
Maar welke hardware en raid configuratie?
Ik denk aan een 2 u supermicro machine met ruimte voor 12 schijven. Andere optie is een server met 8 schijven, maar dan is er kans dat ik in de toekomst schijven te kort kom. Daarnaast een raid kaart, en 2 processoren met elk 6 kernen. OS word Windows server 2008.
De raid configuratie vind ik het moeilijkst. Ben al dagen bezig om op internet een goede configuratie op te zoeken.
Uit het boek “High performance Mysql” begrijp ik dat de mysql data map(data en index bestanden) en de temp map(voor on-disc tijdelijke tabellen en filesorts) op aparte schijven moeten.
Dat boek raad aan om de temp map in een “temperory memory only filesystem such as tmpfs” te plaatsen. Op Windows is dat filesystem bij mijn weten er niet. Of bestaat er iets soortgelijks op Windows?
Ook staat in dat boek: “A typical layout is to have the OS, swap partition, and binairy logs on a raid 1, and a separate raid 5 or 10 volume that holds everything else”
Maar is “typical” hetzelfde als ‘aanbevelingswaardig? Zou het veel beter zijn om die raid 1 te vervangen door een raid 10, zoals in onderstaande configuratie (http://dba.stackexchange.com/questio...racle-database: ):
- 4x as RAID10 for the system areas (OS, SQL Server (MSSQL in our case), swap, tempdb).
- 4x as RAID10 for the data files
- 4x as RAID10 for the transaction logs
Sdd schijnen veel snelheidswinst te kunnen geven. Maar waar kan ik die het best plaatsen? En is het correct dat raid kaarten niet met het trim commando overwerken kunnen? Is het dan wel verstandig om ssd kaarten in raid te plaatsen? Is een combinatie van ssd’s en niet-ssd’ in een raid array aan te bevelen?
Een ander configuratie staat op https://www.sitedeals.nl/hosting-alge...eedback-2.html:
- een deftige raid controler met voldoende mem.
- backup bbu
- SAS disks in min. raid 10.
- evt. een SSD voor het OS
Een enkele ssd voor het OS lijkt me te riskant. Is 2 ssd’s in raid 1 aanbevelingswaardig voor het OS?
En is het niet juist de mysql datamap die op ssd’s schijven moet, om mysql sneller te maken?
Als gekozen word voor een raid 10 op bijv. 4 schijven, kunnen er dan later, indien nodig, eenvoudig extra schijven aan de raid array worden toegevoegd, of moet dat meteen bij het opzetten van de raid array gedaan worden?
Het zou fijn zijn als iemand die ervaring heeft in het configureren met een database server, een advies zou geven.
Ook wil ik mijn ontwikkelserver (staat thuis, dus geen rackserver) gaan vervangen door een snellere. Deze server hoeft geen bezoekers te verwerken, dus hoeft lang niet zo snel te zijn als de boven beschreven server. Heeft iemand een advies mbt te kopen hardware?
Daarnaast zoek ik iemand met ervaring in database tuning, die
- de servers installeert (windows, mysql, php).
- De raid arrays configureerd
- Benchmark tools installeert
- Het systeem tuned( aanpassen van de mysql variablen zoals sort_buffer_size, max tmp tables enz )
Alvast bedankt!
- Advies voor raid configuratie voor database server gevraagd
-
24-08-2011, 20:46 #1
- Berichten
- 29
- Lid sinds
- 16 Jaar
Advies voor raid configuratie voor database server gevraagd
Laatst aangepast door charles vlug : 26-08-2011 om 21:01
-
In de schijnwerper
Popi.nl | Linkbuilding Platform| 14.000+ MogelijkhedenLinkpartners[BELANGRIJK] Festinger Vault - Download 25.000 thema's en pluginsPromotieEstavisumamerika.nl - Bestel je ESTA bij een Nederlands bedrijfWebsite te koopErvaren WordPress & WooCommerce Developer – Pixel-perfect & Whitelabel maatwerk!Freelance / Werk -
24-08-2011, 21:51 #2
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Als je puur op php/mysql draait, zou ik eerst windows dumpen en vervangen door FreeBSD of Linux.
Je OS moet minimaal op een raid 1 staan, maar meestal wordt het os niet zoveel gebruikt, dus een raid 10 voor alles is vaak beter.
Ik weet niet of je een BBU voor die controller hebt. Bij voorkeur wel altijd een BBU gebruiken bij een raidcontroller omdat je dan gewoon de writecache actief kunt houden. Scheelt veel in de performance.
Voor mysql is het vaak van belang om zo'n laag mogelijke access tijd te krijgen. Als je voor ssd's kunt gaan, zou ik dat zeker doen. Elke raid config zal hierbij wel voldoen aangezien accesstijd en throughput van SSD's vaak ruim voldoende is en toch al snel de capaciteit van je raidcontroller voorbij streeft.
Echter je cpu gebruik (8 cores op 80%?) is behoorlijk hoog en je weet zelf ook wel waarom, denk ik? Dat ga je met hardware niet (lang) oplossen. Ik zou kijken voor een alternatieve zoekmethode om van dubieuze oplossingen zoals req. exp. af te komen. Deze zijn door mysql ook niet te cachen en dat zijn wel de onderdelen waar je meters mee maakt als het op performance aankomt.
Eventueel zelf sql resultaten cachen (of op voorhand genereren) van veelgebruikte zoekacties is ook altijd goed.
Het goed tunen van mysql is een proces dat dagen kan duren bij een live site, maar heel vaak kun je wel al snel veel succes boeken (indien de huidige config geen effiecient gebruik maakt van je 28x2GB ram, bijvoorbeeld)
Het scheiden van web en db over meerdere servers/vpssen is altijd goed omdat je dan beide effiecienter kunt configureren voor hun doel en ze niet beiden hoeven te vechten over de beschikbare resources.
Concreet: Eerst uitzoeken wat EXACT de resources vreet en dan dat onderdeel aanpakken. Bij voorkeur in de volgorde:
- zinvolle stats van je resourcegebruik verzamelen
- bepalen of je applicatie lineair of exponentieel resources vreet (m.a.w. als je 2 keer zoveel bezoekers krijgt, heb je dan 2 keer zoveel hardware nodig, of misschien 3-4 keer zoveel)
- kijken of je bottlenecks softwarematig kunt oplossen (exponentieel omzetten naar lineair, partitioneren van sql tabellen etc)
- op basis van je stats bepalen wat voor hardware je nodig hebt (stel je hebt 80% writes en 20% read op je db, dan moet je geen raid 5 pakken, maar raid 10). En uit hoeveel disks dat moet bestaan kun je uitrekenen aan de hand van de iops die je nodig hebt. In principe is dit niet zo makken als het lijkt en prijstechnisch kun je met SSD's tegenwoordig best wat overkill kopen om zeker te zijn van je iops.
-
25-08-2011, 22:30 #3
- Berichten
- 29
- Lid sinds
- 16 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Bedankt voort de nuttige tips!
Ik gebruk alleen php en mysql, maar heb geen zin om mij in linux te verdiepen, dus windows blijft het in de eerste plaats.
De hardware moet ik nog kopen, maar koop zeker een raidcontroller met bbu. Weet iemand goede server leveranciers?
Capacitietsproblemen worden mede veroorzaakt door oude mysql versie(5.0) en windows server 2003. Van mysql 5.5 op windows server 2008 verwacht ik meer snelheid.
Eerst bottlenecks opsporen, en daarna hardware kopen is waarschijnlijk inderdaad het best. Maar met mysql 5.5 op nieuwere windows zullen aantal bottlenecks verdwijnen, en experimenteren met andere settings op een live machine spreekt me niet aan. Ook heeft windows server 2008 meer tools om performance te monitoren.
Denk dat het daarom handig is eerst een nieuwe server te kopen, waarmee settings getest kunnen worden.
Omdat voor mysql de temp map op andere schijven moet komen dat de data map, dacht ik aan de volgende configuratie:
- 2 ssd schijven in raid 1 voor temp map en os
- 4 ssd schijven in raid 10 voor het overige
In een server met ruimte voor 12 schijven kunnen dan indien nodig, schijven en / of raid arrays worden toegevoegd.
Is dit een logische opzet? graag feedback.
John, je schrijft : "indien de huidige config geen effiecient gebruik maakt van je 28x2GB ram" Hoe kan ik dat testen?
En over "Het scheiden van web en db over meerdere servers/vpssen is altijd goed omdat je dan beide effiecienter kunt configureren": dat heb ik vaker gelezen, klinkt logisch, maar hoe configureer je bijv. een server specifiek voor webserver taken?
Is het idee om met virtualisatie linux als 2de OS te plaatsen, zodat hier mee getest kan worden?
Kent iemand mensen die dat kunnen en ook mysql database servers kunnen tunen?
-
25-08-2011, 22:58 #4
- Berichten
- 1.410
- Lid sinds
- 16 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Drie maanden geleden had ik hetzelfde probleem en heb een topic op tweakers over geopend.
Heb daar heel veel hulp gekregen en uiteindelijk ook de problemen opgelost.
Ik had een:
1x Intel Core 2 duo 6600, 2.4Ghz FSB1066, 4MB
2x 4096GB DDR-2 667Mhz
2x Western Digital 80 GB Sata 2 7200 rpm
Windows 2003 en MySQL
Ik had meerdere tabbellen met meer dan 4 miljoen records.
Mijn CPU zat altijd rond de 90% en toen mijn site begon te groeien werd hij traag omdat hij het niet bij kon benen.
Ik had dezelfde reactie als jij had: Nieuwe hardware!
Ik op tweakers gevraagd over een opstelling en de reacties waren: Ga eerste je bottlenecks zoeken.
Gelukkig werd dat gezegd want ik heb een week lopen klooien en uiteindelijk waren er 5 sql queries die de hele server vasttrokken.
Ik heb deze queries aangepast, betere indexes aangelegd, code geoptimaliseerd en het resultaat mocht er wezen.
Zet om te beginnen je "slow query log" aan en je ziet welke query's je resources vreten.
Wat ook enorm hielp: Ik heb in Mysql Administrator de "Flush log at" gewijzigd van "transaction commit flushes logs" gewijzigd naar "Write to Log and flush every second" en dit heeft enórm veel gedaan.
(Is wel nadelig bij een powerfailure maar ik maak zovaak een backup en nog nooit is bij mij de power uitgevallen dat ik het de moeite wel waard vond.)
Ik ging van 90% belasting naar 12% belasting. Het heeft me een week gekost maar de resultaten waren gelukkig goed.
Vervolgens kon ik het niet laten om toch een nieuwe server te kopen omdat de oude een budget server uit 2007 was.
2x Intel Xeon E5506, Nahalem 2,13Ghz Quad Core, 4,8 GT/s, 4MB
6x 4096MB DDR-3 1333Mhz
4x Intel 120GB SSD
Windows 2008
En op die machine komt de belasting niet boven de 2% uit.
Na mijn idee heb je al een machine die héél veel aankan: 8 Cores en 56GB geheugen!
Misschien een upgrade naar SSD maar voor de rest moet die machine heel wat aan kunnen.
Dus kort samengevat: Ik wou het ook niet geloven maar optimaliseren en bottlenecks zoeken is veel werk en het lijkt makkelijker om direct nieuwe hardware te kopen maar het is zéker de moeite waard.
Succes!
Edit: Het tweakers topc staat hier. Misschien heb je er wat aan.
Misschien is het slim om een topic op tweakers te openen. Die lui kunnen je goed verder helpen. Daar zitten de echte "nerds" ;-)Laatst aangepast door Wilbert E. : 25-08-2011 om 23:30
-
25-08-2011, 23:40 #5
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Bedankt voort de nuttige tips!
Ik gebruk alleen php en mysql, maar heb geen zin om mij in linux te verdiepen, dus windows blijft het in de eerste plaats.
De hardware moet ik nog kopen, maar koop zeker een raidcontroller met bbu. Weet iemand goede server leveranciers?
Capacitietsproblemen worden mede veroorzaakt door oude mysql versie(5.0) en windows server 2003. Van mysql 5.5 op windows server 2008 verwacht ik meer snelheid.
Eerst bottlenecks opsporen, en daarna hardware kopen is waarschijnlijk inderdaad het best. Maar met mysql 5.5 op nieuwere windows zullen aantal bottlenecks verdwijnen, en experimenteren met andere settings op een live machine spreekt me niet aan. Ook heeft windows server 2008 meer tools om performance te monitoren.
Denk dat het daarom handig is eerst een nieuwe server te kopen, waarmee settings getest kunnen worden.
Omdat voor mysql de temp map op andere schijven moet komen dat de data map, dacht ik aan de volgende configuratie:
- 2 ssd schijven in raid 1 voor temp map en os
- 4 ssd schijven in raid 10 voor het overige
In een server met ruimte voor 12 schijven kunnen dan indien nodig, schijven en / of raid arrays worden toegevoegd.
Is dit een logische opzet? graag feedback.
John, je schrijft : "indien de huidige config geen effiecient gebruik maakt van je 28x2GB ram" Hoe kan ik dat testen?
En over "Het scheiden van web en db over meerdere servers/vpssen is altijd goed omdat je dan beide effiecienter kunt configureren": dat heb ik vaker gelezen, klinkt logisch, maar hoe configureer je bijv. een server specifiek voor webserver taken?
Is het idee om met virtualisatie linux als 2de OS te plaatsen, zodat hier mee getest kan worden?
Kent iemand mensen die dat kunnen en ook mysql database servers kunnen tunen?
Of je geheugen goed gebruikt wordt kun je alleen meten. Er zijn een aantal perl scriptjes die je de statistieken van mysql een beetje beter verwoorden. De belangrijkste dingen: genoeg geheugen reserveren voor alle indexen, genoeg ruimte voor temptables reserveren, goed index gebruik etc. (High Performance mysql is een goed boek, heb ik zelf ook, dus daar is ook veel uit te halen).
Een goede vuistregel is dat je altijd moet proberen om het aantal rijen dat een sql statement gebruikt, niet teveel mag afwijken van het aantal rijen dat je applicatie nodig heeft (met explain kun je snel zien wat een query 'doet'). En de verhouding tussen beide getallen moet zoveel mogelijk gelijk blijven, ook als een tabel van je db 2 keer zo groot wordt.
Anders zijn de helft van je processor resources alleen nog maar bezig met memory management ipv. queries uitvoeren. (Bij het gebruik van een ramdisk voor de temptabellen zie je dat heel goed).
Als je alleen php/mysql gebruikt moet je dat doen op het meest geschikte platform. Voor jou hoeft het dan niet uit te maken wat het OS is, toch? Die paar tientjes die je per maand extra kwijt bent aan een managed server, bespaar je aan de andere kant weer deels op je resources die je kunt besparen.
Je moet in eerste instantie echt weten waar de load precies vandaan komt voordat je pas kunt zeggen of een bepaalde upgrade gaat werken.
Ik persoonlijk heb in 15 jaar namelijk nog geen site gezien die zoveel geheugen nodig heeft met maar 20K bezoekers per dag tenzij de queries gewoon niet lekker lopen.
In dat opzicht kun je ook eens kijken of bepaalde tabellen niet beter af zijn met een andere db engine (InnoDB t.o.v. MyISAM bv) of dat je misschien beter af bent door een aantal slave db servers te pakken.
Als ik er mijn geld op zou moeten zetten dan is het puur door die reg.exp. waarvoor geen index gebruikt kan worden. Zeker op een tabel van 1,5M producten werkt dat gewoon niet.
Als je een select met een regexp doet dan zal mysql die hele tabel doorlopen. Zit er dan nog een order bij dan wordt er een tijdelijke tabel aangemaakt die je geheugen opvreet en waarop geen index zit -> einde oefening. Ga je met extra hardware niet of maar tijdelijk oplossen. En als je straks 3M producten hebt, dan is het geheugen wat je nodig hebt niet meer aan te slepen.
-
26-08-2011, 21:00 #6
- Berichten
- 29
- Lid sinds
- 16 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Bedankt voor de nuttige reacties!
Het tweakers topic was ik al tegen gekomen, zal het nog eens lezen.
slow Query log stond al aan. Heb vaak meldingen in proceslist als "Copying to tmp table". Begrijp niet dat dat zo lang moet duren(soms langer dan 10 sec.). Ik berijp dat er dan naar ram word gekopieerd, dat moet toch retesnel gaan? Iemand ideeën?
Locking van tabellen komt waarschijnlijk door gebruik van een myisam tabel in meeste queries. Die myisam tabel gebruik ik om fulltext search te kunnen gebruiken. Maar die myisam tabel kan verwijderd worden door full text te doen met Sphinx.
Kunnen er bij wijzigen in "Flush log at" tabellen crashen, of ben je dan alleen de wijzigingen van de laatste seconden kwijt?
Ander voordeel van een 2de server is dat je niet meer afhankelijk bent van 1 server en database. (ik leef van die ene server)Met alles op 1 server vind ik updaten van mysql link. Als mysql niet meer wil starten, moet ik alles vanuit een backup terugzetten, en met veel records kan dat lang duren. En heb nog nooit een storing op bijv. moederbord gehad, maar als dat gebeurt, ben ik offline, en dat waardeert google niet.
Waarschijnlijk valt er inderdaad veel aan de code te verbeteren. Ben wel bang dat ik daar weken aan mee bezig ben.
Ik vraag me af of linux veel sneller is dan windows, zou door virtualisatie getest moeten worden lijkt me. Of heeft iemand een url naar benchmarks?
Heb mijn server gehost bij transip, dat is vlakij mijn huis. Wel prettig als er snel een schijf of geheugen bij moet/vervangen. Zij bieden geen losse managed hosting aan, wel dedicated servers. Maar de specs van die dedicated servers is niet veel bijzonders. Bestaat er ook remote managed hosting? dan kan de server bij transip blijven staan.Laatst aangepast door charles vlug : 26-08-2011 om 21:20
-
27-08-2011, 19:12 #7
- Berichten
- 750
- Lid sinds
- 15 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Windows gaat trager draaien wanneer het te lang aan staat op een server is dat niet anders.
Waarom denk je anders dan dat bijna alleen alle webhosting bedrijven op Linux draaien? vast niet alleen omdat het gratis is.
Apache, php en mysql programma's draaien trouwens ook beter op linux vooral als je ze zelf gaat compileren.
-
28-08-2011, 07:24 #8
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Ja linux is bewezen sneller, stabieler en veiliger te wezen dan Windows.
Windows gaat trager draaien wanneer het te lang aan staat op een server is dat niet anders.
Waarom denk je anders dan dat bijna alleen alle webhosting bedrijven op Linux draaien? vast niet alleen omdat het gratis is.
Apache, php en mysql programma's draaien trouwens ook beter op linux vooral als je ze zelf gaat compileren.
-
28-08-2011, 14:06 #9
- Berichten
- 29
- Lid sinds
- 16 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Als je de keuze moet maken tussen en windows en linux, ga je ervan uit dat beide os-en goed worden geconfiguureerd en beheerd. Dus dan heb je niet veel aan "hangt volledig af van de persoon die het beheert" lijkt mij.
Wel aan benchmarks.
-
28-08-2011, 14:43 #10
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Ik haakte in op het feit dat Linux per definitie sneller, stabieler en veiliger zou zijn. Niet perse op jouw topic, wat dat betreft denk ik dat je met de adviezen van John al een heel eind kunt komen.
-
28-08-2011, 20:22 #11
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Dat linux stabieler is, is al redelijk bekend. (denk aan de verplichte reboots van windows, terwijl dat bij linux/freebsd een zeldzaamheid is).
Uiteraard is dat ook wel een beetje omdat je met linux in principe je hele systeem van scratch af aan tegen je eigen hardware kunt compileren.
Verder durf ik me best de woede van de windowslovers op de hals te halen door te zeggen dat linux veiliger is dan windows. Puur omdat windows 1 keer per maand met patches komt en de linux community vaak al binnen enkele dagen een patch uitrolt indien er een probleem is.
En als laatste.... support voor IIS+MSSQL+dotNET (eventueel php) op windows is er zat, support voor apache+mysql+php op linux is er ook zat... support voor afwijkende combinaties is er weinig en daar hoef je vaak ook niet veel mojo of hocus pocus van te verwachten.
-
29-08-2011, 10:25 #12
- Berichten
- 29
- Lid sinds
- 16 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Heb een benckmark gevonden op https://scholarworks.iu.edu/dspace/b...pdf?sequence=2, over verschil in performance tussen windows server 2008 en linux. Tot 256 kernen blijkt performance gelijk, daarna is linux sneller.
Kom voorlopig niet boven 256 kernen uit hoop ik.
Voor linux zijn wel soms bibliotheken veel eerder beschikbaar dan voor windows. Dit was bijvoorbeeld het geval voor een dll die nodig was voor APC, een php opcode cache. En heel wat benchmark tools zijn ook alleen voor linux geschikt
Weet iemand url's naar info over hoe zowel windows als linux op dezelfde server te plaatsen?Laatst aangepast door charles vlug : 29-08-2011 om 10:43
-
29-08-2011, 10:35 #13
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Re: Advies voor raid configuratie voor database server gevraagd
Heb een benckmark gevonden op https://scholarworks.iu.edu/dspace/b...pdf?sequence=2, over verschil in performance tussen windows server 2008 en linux. Tot 256 kernen blijkt performance gelijk, daarna is linux sneller.
Kom voorlopig niet boven 256 kernen uit hoop ik.
Weet iemand url's naar info over hoe zowel windows als linux op dezelfde server te plaatsen?
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic