![]() |
Seg sida på snabb server.
Hej,
Jag kör en webbsida på en VPS hos Glesys. Den går ganska bra men tenderar att bli väldigt seg när jag har 100+ besökare samtidigt. Se bilder här på "top": http://imgur.com/a/FnbZo Vad kan man dra för slutsater av detta? Det är cirka 54 inloggade och 52 ickeinloggade dvs 106 st aktiva samtidigt på sidan. Det är ett forum där användarna är väldigt aktiva, det är nästa som en chatt för dem. Jag har 8 core 12 Gbyte RAM, Debian 64-bit. Apache prefork mm hos Glesys så det borde inte vara servern som gör detta segt. Vad kan jag göra för att få detta att gå lite snabbare? Mvh Admin |
Citat:
Du kan även öka prestandan på httpd, sök på nätet efter apache performance tuning linux |
Vad säger error-loggen i Apache? Det är inte så att du slår i taket med max antal trådar?
Kolla server-status när du har som mest besökare för att se hur server har det med trådar. |
Serverhårdvara spelar ingen roll om MySQL konstant måste läsa från disk. Förmodligen dåliga SQL-frågor och icke-existerande index. Öka även framförallt query_cache (om MyISAM) eller buffer_pool (om InnoDB) också.
Ett annat tips, kasta ut Apache och byt till Nginx: https://github.com/vladgh/VladGh.com-LEMP |
Ett verktyg som är guld värt när det gäller att hitta denna typ av problem är New Relic, https://newrelic.com/ mha det så hittar man nästan alltid alla flaskhalsar.
|
Citat:
|
Väldigt overkill VPS må jag säga för en sån liten site, hade nog räckt med 10% av den där lösningen.
|
Din största flaskhals verkar utan tvekan vara databasen utifrån de där två bilderna. Det är också datanbasen som nästan alltid blir den första flaskhalsen i webbaserade system.
Du har väldigt kraftig hårdvara för såpass lite besökare så du borde kunna optimera en hel del och till och med kunna dra ned resurserna på din VPS en hel del. Kolla först på MySQL-inställningarna som Adestro nämnde ovan. Kör du någon form av cache förutom den inbyggda i MySQL? Om inte, vad kör du för formmjukvara? Det finns bra cacheplugins till de flesta forummjukvaror som använder memcached eller något annat minnesbaserat cache-system så att du slipper fråga MySQL varje gång utan kan hämta direkt ifrån minnet - Det gör underverk för prestandan! Memcached installerar du väldigt enkelt genom att köra: Kod:
apt-get install memcached php5-memcache |
Citat:
Citat:
|
Citat:
Minnesalokeringen på memcached verkar dock vara väldigt låg så det verkar som de skulle kunna använda det till att cacha mycket mer data. Vad använder ni memcached till? Nginx är också oftast ännu bättre på just VPS där man ofta har betydligt mindre minne att röra sig med och minne brukar vara förhållandevis dyrt. |
Ett annat tips kan vara att skaffa två mindre burkar istället för en kraftig. Det finns goda skäl till att dela upp databasen i en enhet och webbservern i en annan. Oavsätt hur många kärnor / CPU:er din burk har kommer saker ändå inte kunna göras helt parallellt vilket kommer göra det oeffektivt.
Nu vet jag dock inte riktigt hur detta fungerar i praktiken med VPS, det kanske inte blir samma sak när det är virituellt. I övrigt håller jag med föregående talare. Optimera databasen. Är det en egen skriven mjukvara så finns det garanterat mycket att göra. Normalisera tabellerna, kolla frågorna, indexera rätt, etc. Om det är en egen skriven mjukvara så lägg gärna till profilering så att du kan kika på vad varje request från klienten lägger sin tid. Börja att arbeta med de stora tidstjuvarna som körs ofta. Du skriver att din mjukvara fungerar som en chatt. Är det någon form av pollning mha ajax? Kanske finns någon timeout att minska på. 100 användare som pollar systemet varje sekund blir en jäkla last som hammrar din server. Bara genom att minska en eventuell pollning till var 5:e sekund (något man som användare knappast märker) så minskar du lasten 5 gånger! Du kan även göra så att inaktiva användare pollar mer sällan. |
Alla tider är GMT +2. Klockan är nu 16:19. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson