Dec 1, 2011 0
Linux är helt felpaketerat
När du idag installerar en linuxdist, tex Debian 6 eller CentOS 6 och väljer att installera det som en “server” då kommer installationsprogrammet installera det allra nödvändigaste och inte mycket mer, såvida du inte väljer en massa extra paket.
Sedan väljer du att installera dom applikationer du vill ha, tex MySQL, Nginx och PHP. Allt är frid och fröjd så länge din applikation bara har ett fåtal besökare, MEN när besöksantalet växer, applikationen blir mer krävande, du lägger till CPU, RAM och HDD men applikationen går ändå inte fortare, känns det igen?
Allt detta beror på att linux är helt felpaketerat, många av applikationerna, begränsningarna i hur många filer och processer en användare får använda och antalet databastabeller som får vara öppna samtidigt i databasen, är alla konfigurerade för att köras på en mobiltelefon, prestandamässigt åtminstone.
För att ta ett exempel: en större webbapplikation kanske har en 2000 databastabeller, är det en WordPress multisite så kan den mycket väl ha fler, vad sägs om några tusen tabeller? Som standard är den MySQL konfiguration som skeppas med Debian 6 satt med en table_open_cache till 256, det optimala för MySQL är antalet tabeller * max antal joins och i de flesta webbapplikationer gör man fler än 2 joins i en query, säg att man gör 3 joins som mest i en query det gör att table_open_cache borde vara någonstans runt 2000 * 3 dvs 6000. Så istället för att skeppa en liten konfig som standard, skeppa en konfig som låter mig nyttja servern till max.
Ett bättre och ett fel som många springer på och som jag avhandlar i det här blogginlägget är att användarkonton i linux av någon outgrundlig anledning har ett maxtak på 1024 öppna filer. Jag köper att man kanske har det på Ubuntu som är en desktopapplikation, men i Debian som installeras som en server? Hur har man tänkt där?
Det är två exempel på hur sned standardkonfigurationen är, det känns som att när man paketerar linuxdistributionerna så tänker man “Men vi vill ju inte att servern går omkull, så vi konfar allting lågt”. Jag vet att det är ofta är standardkonfigurationen för applikationen som skeppas, och det spelar ingen roll, det är precis lika skevt och det är inte intressant om det är applikationens konfiguration eller om det är en konfiguration gjord av teamet bakom distributionen, det som påverkas i slutändan är användaren och användarupplevelsen.
I min värld så är det helt snett, att nyttja en server till 50% av sin kapacitet är inte ekonomiskt. Säg att du köpt en server för 20 000, och lite tillbehör för 10 000 så din kostnad för servern är 30 000 och kanske 5 000 / månad (man brukar räkna 5500 som kostnaden för en server / månad med underhåll och patchar) om då bara nyttjar servern till 50% då slänger du ju bort 50% av din investering varje månad, och hur sjukt är inte det? I en ideal värld så vill man utnyttja servern så mycket som möjligt, säg att den ligger på 70% vid normal användning och 100% vid en peak, då nyttjar man både sin investering och den energi som går åt att driva och kyla servern maximalt. Här kan man applicera samma tänk som man använder när man pratar om fördelarna med virtualisering, högre utnyttjande av mindre hårdvara är bättre ekonomi och miljö.
I en del fall är det kanske inte hållbart att köra servern tills den kroknar och går ner, utan man vill försöka hålla maskinen online och vill då ha ett max utnyttjande på 90% vid en peak, oavsett så är nyckeln att se över konfigurationen. Om servern utnyttjas till sitt max, då är det också enklare att se vart i sin applikation man ska optimera, man kanske måste snygga till koden, databasen eller tänka över hela sin design, men det kan och ska man inte göra förrän man är säker på att man nyttjar servern till sitt max, eller åtminstone det max man satt upp som företagspolicy.
Det är irrelevant om servern är en VPS eller dedikerat stål, det är ändå i allas intresse att servern utnyttjas till fullo, eller det är åtminstone i kundens intresse, en VPS leverantör tycker nog inte att 100% nyttjande av 100% av maskinerna är sådär superkul. Men det ger kunden mer bang for the buck.
Kan vi inte enas om att se över våra konfigurationer och se till att vi nyttjar våra maskiner så mycket det går?


Senaste kommentarerna