WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Apache optimering sept 2010 (igen) (https://www.wn.se/forum/showthread.php?t=1043901)

Azone 2010-09-18 17:24

Apache optimering sept 2010 (igen)
 
Jag har nu satt upp min server, en cloud server från City Network.
Behöver tips på hur man bör tuna sin apache (och kanske php, mysql mm).

1. Är det någon parameter som behöver ändras med min data nedan som utgångspunkt.
2. Finns andra tips för att optimera sin webbplats, server etc.
3. Bör man kompilera om Apache2, och hur gör man då.
4. Finns det några tummregler för MPM prefork och work?

Alla tips mottages tacksamt.

mvh Azone


### CMS ###
Drupal (skräddarsytt forum för ämnet, med flera medlemsnivåer)

### Besök & Aktivitet ###
200 000 pageview/month
25000 besök
8500 Unikabesökare
Runt 1200 besök per dag och 800 unika.

ca 40-60 inloggade kvällstid (som är väldigt aktiva, chattar nästan via forumet).

Dynamiska sidor, förhållandevis många php-processer antar jag.
Rena URL'er (clean URL, mod_rewrite)
Text och bilder

### Maskin (Virtual Maskin - City Cloud ###
CPU 1
Memory 2 Gbyte
Debian 5.0.6 64 bit
Dell EqualLogic Raid storage
Apache2 (prefork), php5, mysql

### php.ini ##
memory_limit = 256M (php.ini)

### httpd.conf och apache.conf ###
ServerRoot "/etc/apache2"
PidFile ${APACHE_PID_FILE}

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15


<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
MaxRequestsPerChild 0
</IfModule>

<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 2000
</IfModule>

# These need to be set in /etc/apache2/envvars
User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

AccessFileName .htaccess

DefaultType text/plain
HostnameLookups Off

Jonas 2010-09-18 18:05

Satsa på en annan httpd, så som Lighttpd eller Nginx

Dessa är optimerade från scratch o du slipper massa onödigt skräp som apache har.

Azone 2010-09-18 18:06

Jag måste kommentera min egen tråd, det funkar faktiskt väldigt bra nu. Mycket trafik och acceptabel access till webbsidan. Är dock ändå intresserad om det finns något som kan förbättras eller bör ändras.

Azone 2010-09-18 18:09

Citat:

Ursprungligen postat av Jonas (Inlägg 20370020)
Satsa på en annan httpd, så som Lighttpd eller Nginx

Dessa är optimerade från scratch o du slipper massa onödigt skräp som apache har.

Ja, kanske det :-)
Är de svårare att konfigurera? Och fungerar clean URLs med dessa ?

Jonas 2010-09-18 20:04

Citat:

Ursprungligen postat av Azone (Inlägg 20370022)
Ja, kanske det :-)
Är de svårare att konfigurera? Och fungerar clean URLs med dessa ?

nginx är ganska straight-through så väldokumenterad som den är.

lighttpd vet jag inte, eftersom jag inte har använt det.

Nu behöver du iof php så out-of-the-box kommer det inte att fungera.

Yoghurt 2010-09-18 20:24

Jag kan även rekommendera http://www.litespeedtech.com/ om du är ute efter att byte ut apache. Ett mycket enkelt Web GUI medföljer där du kan ändra mer eller minder alla inställningar. Snabbt går det också.

Clarence 2010-09-18 21:09

Har du hyfsat med minne i servern ser jag ingen poäng med att byta ut apache mot en mer lightweight server med bara 10k sidvisningar om dagen. Speciellt inte då du behöver sätta dig in i en ny servers inställningar och egenheter.

För snabbaste bytet är det nog litespeed som gäller då den har stöd för samma rewrites vad jag har för mig (har aldrig testat den).

Annars är både Nginx och Lighttpd betydligt mer välanvända så om du söker svar på buggar eller problem kan de vara att föredra. Dock har båda två annorlunda system för URL rewrites jämfört med apache. Har dock väldigt bra erfarenhet av prestandan hos Lighttpd för riktigt rejäla trafikvolymer och jag vet att det finns många som har detsamma av nginx.

jayzee 2010-09-18 22:57

Citat:

Ursprungligen postat av Yoghurt (Inlägg 20370043)
Jag kan även rekommendera http://www.litespeedtech.com/ om du är ute efter att byte ut apache. Ett mycket enkelt Web GUI medföljer där du kan ändra mer eller minder alla inställningar. Snabbt går det också.

Cherokee är lika bra som litespeed eller lighttpd, kommer med ett skitsnyggt admin-interface och är gratis.

abergman 2010-09-19 00:44

Lighttpd har tidigare dragits med minnesläckor och det är ju inte sådär asbra:( Nginx gör exakt samma sak och imho gör det bättre.

Clarence 2010-09-19 09:42

Citat:

Ursprungligen postat av abergman (Inlägg 20370064)
Lighttpd har tidigare dragits med minnesläckor och det är ju inte sådär asbra:( Nginx gör exakt samma sak och imho gör det bättre.

För att Lighttpd för ett par år sen hade en del minnesläcke-problem ska man inte välja det. Men att Nginx också hade minneläckor vid ungefär samma tidpunkt som dessutom var rätt mycket värre ... det ska inte ha inverkan?

Azone 2010-09-19 14:24

Citat:

Ursprungligen postat av Clarence (Inlägg 20370050)
Har du hyfsat med minne i servern ser jag ingen poäng med att byta ut apache mot en mer lightweight server med bara 10k sidvisningar om dagen. Speciellt inte då du behöver sätta dig in i en ny servers inställningar och egenheter.

Nej, jag känner samma sak, min trafikvolym borde apache klara, jag tror det är mer ett tuning-problem (kanske annat också).

Nu går servern bra i 6 timmar sen blir den seg och låser sig så småningom (upplevs som låst). Någon som har någon idé?

Jag har ökat MaxRequestsPerChild till 256 eftersom det enligt några webbsidor verkar vara standardvärde. Är 256 ok där?

Jag har också installerat eaccelerator (php-cache), men vet inte hur man verifierar att den verkligen fungerar. Och som sagt server går bra i 6-12 timmar innan det kör ihop sig.

Jag vet inte heller hur jag kan spåra eller ev se vad som går tungt heller.
Har inte hunnit sätta mig in i det men tvingas nog göra det nu. Svårt också när man inte har ett GUI.

mvh
Azone

KristianE 2010-09-19 14:44

Vilket OS kör du?

Azone 2010-09-19 16:07

Följande konfig:

Virtual Machine at City Cloud
CPU 1
Memory 2 Gbyte
Debian 5.0.6 64 bit
Dell EqualLogic Raid storage
Apache2 (prefork), php5, mysql (+eaccelertor)

memory_limit = 256M (php.ini)

Kan dessa parametrar förbättra något, vet ej vilka värden jag bör använda.
realpath_cache_size = 2M (satte den till 2M nyss)
realpath_cache_ttl = 120 (default)

KristianE 2010-09-19 16:27

Ah, sorry. Jag var blind. Har du testat att lägga databasen
på en egen server?

abergman 2010-09-19 19:34

Citat:

Ursprungligen postat av Clarence (Inlägg 20370080)
För att Lighttpd för ett par år sen hade en del minnesläcke-problem ska man inte välja det. Men att Nginx också hade minneläckor vid ungefär samma tidpunkt som dessutom var rätt mycket värre ... det ska inte ha inverkan?

Jag sa "har" som i att det har varit så tidigare, och med det tycker jag att det är underförstått att det inte behöver vara så längre. Jag har ingen aning om hur Lighttpd presterar idag, men när jag använde den så var jag inte nöjd och bytte till Nginx, sedan dess har jag inte orkat bry mig om att testa Lighttpd. Det är väl upp till TS att ta reda på om Lighttpd eller andra servrar är något han kan tänka sig att använda?

Notera "imho" dvs, att det är min åsikt och inte fakta.

SimonP 2010-09-20 13:11

Stäng av moduler som inte behövs, t.ex:

httpd.conf:
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule auth_ldap_module modules/mod_auth_ldap.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so

perl.conf
#LoadModule perl_module modules/mod_perl.so

python.conf
#LoadModule python_module modules/mod_python.so

Verifera att eAccelerator fungerar! Följer med en fil för detta: control.php

Varför 256MB i PHP mem_limit? Det är väldigt mkt.

Prova sänk värdet i KeepAliveTimeout:en.

Clarence 2010-09-20 13:32

Vad är det som gör att du tror att apache är problemet? Försök först att identifiera exakt varför det hänger sig.

Kolla vilka, om några, processor som drar minne/CPU när det hänger sig. Titta på exekveringstider för PHP-scripten. Se om du har många SQL-queries som väntar på lås (väldigt vanligt problem för MyISAM-tabeller).

Har du någon krävande bildbearbetning eller liknande? Annars kan du sänka memory_limit rejält för att utesluta att något PHP-script snor åt sig allt minne med ett par träffar. I annat fall kan en utskrift/loggning av max-minnet från PHP vara av intresse (memory_get_peak_usage()).

Clarence 2010-09-20 13:43

Citat:

Ursprungligen postat av abergman (Inlägg 20370151)
Jag sa "har" som i att det har varit så tidigare, och med det tycker jag att det är underförstått att det inte behöver vara så längre. Jag har ingen aning om hur Lighttpd presterar idag, men när jag använde den så var jag inte nöjd och bytte till Nginx, sedan dess har jag inte orkat bry mig om att testa Lighttpd. Det är väl upp till TS att ta reda på om Lighttpd eller andra servrar är något han kan tänka sig att använda?

Notera "imho" dvs, att det är min åsikt och inte fakta.

Min poäng var just det, att tidigare problem med minneläckor inte borde påverka valet (om de inte varit konstant återkommande förstås). Apache, lighttpd och nginx har alla haft minneläckor - och patchat dom.

Azone 2010-09-20 19:18

Tack för alla bra svar! Verkligen uppskattat, jag har lärt mig massor :-)

Nu har det fungerat rekordlänge (över 15 timmar) med "hyfsad" prestanda och utan behov av server-omstart.

Senaste åtgärderna (efter en massa tester, läsande här (tack) och googlande)
- Jag bytte eccaelerator från "php-läge" till "zend-läge" i php.ini
- Satte ett värde på "eaccelerator.shm_size="" som var noll (0) default men då "åt" den minne i längden, när jag satte den till "16" stanade minnes-läkaget. Trots att noll anses vara default och att man inte skall behöva ändra värdet (??). Såg dock att "16" var ett vanligt värde och nu är det stabilt.
- Jag fortsätter med apache2 eftersom det i sig inte verkar vara det största problemet.
- Jag har verifierat att eccaleerator fungera både med phpinfo() + sett att cachefiler skapas i tmp dir.
- Jag ökade realpath_cache_size=8M (från 2M i php.ini)
- Kör "saidar" för att kolla minnet ibland (fungerar bra, men vad är standard för denna typ av koll?)
- Enl Saidar ligger RAM-minnesförbrukning konstant på ca 800M-1G (av 2G), oavsett den belastning jag sett hittills (ganska många inloggade och aktiva).

Nu verkar det vara stabilt iaf, och det är nog massor med tweaks som jag kan göra för att trimma systemet mer, och det kommer jag göra, men om detta håller sig känner jag mig lugn och måste koncentrera mig på lite annat ett tag. Men skall ta bort en del av de onödiga mods'en som några av er föreslagit ovan. Samt se om jag kan minska memory_limit lite. Men vi har krävande bildhantering ibland iaf. Därav det höga memory_limit.

Jag har lite annat att ta tag i vad det gäller säkerhet, mysql-tweaks, filsystem, mailsystem och mycket mer (som jag förmodligen inte en vet än).

Tack och bock

mvh
Azone

Adrian B 2010-12-22 21:59

Skulle vara kul att höra hur det gått sedan dess, hitta några nya optimeringar? (Är främst nyfiken på hur väl Drupal fungerar hos City Cloud.)


Alla tider är GMT +2. Klockan är nu 21:13.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson