WN

WN (https://www.wn.se/forum/index.php)
-   Webbhotell (https://www.wn.se/forum/forumdisplay.php?f=13)
-   -   Seg sida på snabb server. (https://www.wn.se/forum/showthread.php?t=1054612)

Azone 2012-08-20 23:00

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

lazat 2012-08-20 23:56

Citat:

Ursprungligen postat av Azone (Inlägg 20447908)
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

Det såg ut som mysql låg på 50% av cpu. kolla dina sql frågor samt optimera index i databaser och sätt nycklar.

Du kan även öka prestandan på httpd, sök på nätet efter apache performance tuning linux

Björklund 2012-08-21 05:30

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.

Adestro 2012-08-21 07:27

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

b_andersson 2012-08-21 09:54

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.

Danielos 2012-08-21 10:19

Citat:

Ursprungligen postat av Azone (Inlägg 20447908)
Hej,
Det är ett forum där användarna är väldigt aktiva, det är nästa som en chatt för dem.

Vad är det för forumprogramvara? De flesta programvaror kan optimeras på lite olika sätt.

gotserved 2012-08-21 12:49

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.

pelmered 2012-08-22 15:56

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
Nginx är en webbserver som jag tycker är mycket bättre. Framför allt är Nginx mycket bättre på att hantera många samtidiga anslutningar än vad apache är. Att köra PHP-FPM ger också riktigt bra prestanda och gör ditt system mer skalbart. Du kan då enkelt lägga ut PHP-proccenseringen på en annan server eller ett serverkluster, men det bör du inte ha behovet av riktigt än.

Danielos 2012-08-22 16:24

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20448033)
Memcached installerar du väldigt enkelt genom att köra:
Kod:

apt-get install memcached php5-memcache

Fast enligt top bilderna är memcached installerat?

Citat:

Ursprungligen postat av ITisGood.se (Inlägg 20448033)
Nginx är en webbserver som jag tycker är mycket bättre. Framför allt är Nginx mycket bättre på att hantera många samtidiga anslutningar än vad apache är. Att köra PHP-FPM ger också riktigt bra prestanda och gör ditt system mer skalbart.

Helt riktigt, den största anledningen att ta egen vps är att slippa ett webbkonto på ett webbhotell som kör seg-apache och köra nginx eller lighttpd istället. Om inte alla php opensource programvaror var beroende på .htaccess och att kunder enkelt kan ändra inställningar i .htaccess så hade apache idag varit ett utdömt faktum och knappt inte funnits mer. Finns dock ett bra sätt att få apache att fungera någorlunda och det är att köra Apache2 Worker med php-fpm, men i detta fallet ser det ut som prefork körs?

pelmered 2012-08-23 08:53

Citat:

Ursprungligen postat av Danielos (Inlägg 20448040)
Fast enligt top bilderna är memcached installerat?

Ah, det stämmer. Kollade inte så noga nedåt i processlistan.

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.

coredev 2012-08-23 20:52

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