Op dit moment draai ik een lichte server voor mijn eigen websites als mede een paar kleinere websites voor enkele van mijn klanten. De webserver functioneert ook als mailserver voor zo'n 50 zakelijke mailboxen.

Het merendeel van al het verkeer (ik schat zo'n 99%) is afkomstig van één van mijn eigen websites. Dit is een discussie forum met zo'n 20.000 leden er er zijn altijd zo'n 50-200 mensen tegelijkertijd aan het browsen op het forum. Er worden ongeveer 2.000-3.000 nieuwe berichten per dag geplaatst. De voorpagina alleen krijgt zo'n 2 miljoen hits per jaar - cache hits niet meegerekend. Ongeveer de helft van alle opgevraagde pagina's op dit forum worden dynamisch gegenereerd door PERL scripts.

De mailserver behandelt zo'n 3.000-5.000 email per dag (waarvan 90% spam, helaas).

Ik kan de verbruikte bandbreedte relatief laag houden omdat alles eerst met mod_gzip wordt gecomprimeerd alvorens het naar de bezoekers gestuurd wordt.

Hier is een MRTG grafiek van de afgelopen week:

[Hmmmm, blijkbaar vindt de forum software dat ik niet genoeg postings op mijn naam heb staan om plaatjes te posten. Maar goed, hier hoort dus een prachtige MRTG grafiek]

Ook al zijn de specs van mijn server behoorlijk laag, hij draait ontzettend snel. Zelfs wanneer er 200 mensen tegelijkertijd op mijn forum zitten is the load average als volgt:

Code:
load average: 0.99, 0.76, 0.71
Alle websites zijn erg snel. Sterker nog, de meeste van mijn bezoekers komen van Amerika en ik krijg erg vaak complimenten dat mijn sites sneller draaien dan de meeste van de Amerikaanse sites die ze bezoeken.

En wat zijn dan de hardware specs van mijn server? De server draait op een 1.2GHz PIII Celeron met 1Gb PC100 geheugen, een 40Gb ATA100 HDD en een 80GB ATA100 HDD. Het moederbord is zo'n alles-in-één moederbord met onboard LAN/VGA/Audio. Hij draait op Debian Woody en Apache 1.3.26 (en natuurlijk Sendmail, MySQL, PERL 5, enz.).

Niet echt een top-end systeem en een zeer oude versie van Debian.

De reden dat ik nooit geupgrade heb, is omdat alles erg goed en snel draait. Althans, dat dacht ik.

Eens in de zoveel maanden wordt ik 's ochtends wakker en kom ik er achter dat mijn server "down" is. De server staat bij een colo zo'n 100km verderop dus er is voor mij geen eenvoudige manier om er achter te komen wat er fout is gegaan. Meestal bel ik gewoon de colo op en vraag of zij even voor mij kunnen kijken. Meestal vinden ze een server die vast zit in de boot-fase, of meer specifiek, vast zit in fschk. De harddisken gebruiken beiden Ext2 en Ext2 heeft geen journalling. Wanneer het een fout op de HD vindt, is gebruikers interactie vereist en daar staat het apparaat dan op te wachten. En zelfs al worden er geen disk errors gevonden, dan nog duurt het om één of andere reden meer dan een uur voordat fschk klaar is.

Ik heb geen idee wat de oorzaak is van deze reboots. Ik heb al een keer het geheugen omgewisseld en dat heeft niet geholpen. Ook heb ik er een tweede HD ingezet om de eerste HD te ontlasten en dat lijkt een ietwat geholpen te hebben omdat de de server nu "slechts" eens per half jaar vast zit. Daar kan ik wel mee leven en mijn klanten gelukkig ook omdat - buiten deze paar uurtjes om - de server verder een uptime van 100% heeft.

Maar niet zo lang geleden controleerde ik (voor iets anders) mijn syslog bestanden en zag iets waar ik best wel van schrok. Het blijkt namelijk dat de spontane reboots niet eens per 6 maanden voorkomen, maar eens per week. Maar omdat hij niet altijd een fschk doet bij iedere reboot, duurt het slechts een paar minuten voordat de server weer in de lucht is, en dat is blijkbaar niet lang genoeg voor mensen (bezoekers/klanten) om in de alarmbel te klimmen. Maar dit betekent wel dat vroeg of laat de server bij het opstarten wél weer die fschk gaat doen. Met weer een paar uur downtime als gevolg.

Daarom heb ik besloten om toch maar een nieuwe server te bouwen.

Goed, dat was een enorm lap tekst dat slechts als intro diende. Dus als je zover bent gekomen, dan kudos.

De nieuwe server is nog steeds niet het allerbeste of -snelste. Het forum is iets dat ik uit hobby doe en ik reken mijn klanten ook bijna niets voor een simpele website en wat mailboxen. Dus "money is tight". Vooralsnog had ik gekozen voor een 3.06GHz P4 (533Mhz FSB), met 2Gb PC2400 en 2x80Gb ATA100 HDDs. Niet spectaculair, maar een enorme stap omhoog van de 1.2GHz Celeron. De server draait op Debian Etch en verder heb ik uiteraard alles geïnstalleerd wat ik nodig had.

Hoe kan ik nu testen of alles optimaal draait?

Een voorbeeldje. Omdat ik heel veel ervaring heb met het bouwen van computers, weet ik dat bij die alles-in-één moederborden ht wijzigen van het gebruikte VGA geheugen je hele computer met zo'n 100% kan versnellen (dus 2x zo snel maken). Dit heeft te maken met shared memory en block boundaries en zo. Maar als je dit niet weet en je laat je die BIOS instelling gewoon standaard, dan draait je machine dus verre van optimaal.

Met een Windows machine is het eenvoudig. Je download gewoon één van de vele benchmark programma's (Sandra, PCMark, 3DMark, etc.), draait deze en vergelijkt je resultaten met de duizenden online resultaten voor soortgelijke systemen.

Maar hoe ga je te werk met een Linux systeem? Uiteraard heb ik standaard testen uitgevoerd met apps als hdparm en ab. En hoewel die mij zeer acceptabele waardes geven, heb ik geen flauw idee of dat optimaal is voor mijn systeem omdat ik geen enkel vergelijkingsmateriaal heb.

Dus hebben jullie nog tips hoe ik dit systeem het beste kan testen en optimaliseren?

(Overigens ga ik waarschijnlijk toch de hardware vervangen en er een dual core systeem van maken, maar de vraag blijft dan hetzelfde).