WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hantera 1000-tals besökare! (https://www.wn.se/forum/showthread.php?t=13079)

Micke04 2006-03-21 19:49

Jag förväntar mig en besöksanstormning på ca 5000 personer samtidigt.... är dessa värden vettiga eller bör jag ändra något?


# PidFile: The file in which the server should record its process
# identification number when it starts.

PidFile /var/run/apache2.pid

# Timeout: The number of seconds before receives and sends time out.

Timeout 300

# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.

KeepAlive On

# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.

MaxKeepAliveRequests 0

# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.

KeepAliveTimeout 5

## Server-Pool Size Regulation (MPM specific)
##

# prefork MPM
# StartServers ......... number of server processes to start
# MinSpareServers ...... minimum number of server processes which are kept spare
# MaxSpareServers ...... maximum number of server processes which are kept spare
# MaxClients ........... maximum number of server processes allowed to start
# MaxRequestsPerChild .. maximum number of requests a server process serves
<IfModule prefork.c>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 256
ServerLimit 256
MaxRequestsPerChild 0
</IfModule>

# pthread MPM
# StartServers ......... initial number of server processes to start
# MaxClients ........... maximum number of server processes allowed to start
# MinSpareThreads ...... minimum number of worker threads which are kept spare
# MaxSpareThreads ...... maximum number of worker threads which are kept spare
# ThreadsPerChild ...... constant number of worker threads in each server process
# MaxRequestsPerChild .. maximum number of requests a server process serves
<IfModule worker.c>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>

# perchild MPM
# NumServers ........... constant number of server processes
# StartThreads ......... initial number of worker threads in each server process
# MinSpareThreads ...... minimum number of worker threads which are kept spare
# MaxSpareThreads ...... maximum number of worker threads which are kept spare
# MaxThreadsPerChild ... maximum number of worker threads in each server process
# MaxRequestsPerChild .. maximum number of connections per server process (then it dies)
<IfModule perchild.c>
NumServers 5
StartThreads 5
MinSpareThreads 5
MaxSpareThreads 10
MaxThreadsPerChild 20
MaxRequestsPerChild 0
AcceptMutex fcntl
</IfModule>

bivald 2006-03-22 19:25

Vad kör du för OS och server? Kör du en kraftig server med flera processorer (linux) bör du nog kompilera in MPM = worker. Vad ska du köra på sidan? Vilka moduler har du kompilerat in? Ta bort _allt_ som inte är livsnödvändigt.. Worker kan du köra så att varje server är 64 klienter och en klient får en thread.. Ex:

StartServers 10
MaxClients 640
ThreadsPerChild 64

Om du t.ex. ska köra en server med cgi program som tar kraftigt men inte så många kan du köra:

./configure --disable-asis --disable-auth --disable-autoindex --disable-access --disable-env --disable-imagemap --disable-include --disable-log-config --disable-negotiation --disable-setenvif --disable-userdir --with-mpm=worker --with-apr=/usr/local/apr-httpd/ --with-apr-util=/usr/local/apr-util-httpd/

För att nämna några exempel. Gå igenom compile instruktionerna på apache och tänk igenom vad du behöver och ta bort resten..

Kanske köra flera apache/servrar?

kullervo 2006-03-22 19:39

Hur mycket minne har du? Jag skulle vilja sänka KeepAliveTimeout från 5 till 2.

Micke04 2006-03-22 20:01

Sajten: Modellbilder.se
Många pageviews, över 200'000 per dag
Besökare: 400 st samtidigt på kvällar

Måga sql frågor (optimerade)
Cache: jpcache på vissa sidor, eAccelerator för php

Server: Xeon 2400 mhz, 2gb ram
CPU load vid kvällar: 30-40%
Load vid kvällar: 1-1.5 i average...

Debian Linux, apache2, mysql4

Micke04 2006-03-22 20:52

Citat:

Originally posted by bivald@Mar 22 2006, 19:25
Vad kör du för OS och server? Kör du en kraftig server med flera processorer (linux) bör du nog kompilera in MPM = worker. Vad ska du köra på sidan? Vilka moduler har du kompilerat in? Ta bort _allt_ som inte är livsnödvändigt..
core mod_access mod_auth mod_log_config mod_logio mod_env mod_setenvif prefork http_core mod_mime mod_status mod_autoindex mod_negotiation mod_dir mod_alias mod_so mod_actions mod_cgid mod_include mod_perl mod_php4 mod_rewrite mod_ssl mod_suexec mod_userdir


Alltså rätt många.. det är en default apt get installation, som jag förstår kanske inte är optimal!

Kan worker ge bättre prestanda trots att det bara är 1 cpu?

Westman 2006-03-23 09:06

Det undrar jag med.

bivald 2006-03-23 14:13

Det vet jag faktiskt inte. Men jag kan säga direkt att du bör inte ha så många moduler inkompilerade. Ju mer moduler ju fler saker som körs varje gång.

Sen funderar jag på, är det någon speciell anledning du kör apache eller var den lättast att slänga in? Om jag förstått det rätt har du många men relativt lätta script?

Kanske är lighthttpd eller boa något för dig?

http://www.lighttpd.net/benchmark/
http://www.boa.org/

Båda gjorda för många visningar med förhållandevis lätta scripts. Webmonkey har en guide för att tuna apache - http://www.webmonkey.com/webmonkey/97/49/index3a.html (finns massor på google)

Lighthttpd benchmarks finns på http://www.lighttpd.net/benchmark/

"lighttpd + fastcgi is more than 25% faster than apache + mod_php4."

De har också en "migrating from apache" guide på http://trac.lighttpd.net/trac/wiki/MigratingFromApache och jag vet många stora siter som kör lighthttpd (alistapart t.ex.)

Då du har så många besökare förseslår jag start att du sätter dig ner och kollar igenom alternativen och kanske kör lite egna benchmarks, du kan ju alltid köra igång testservrar på alternativa portar. Apache benmarking tools finns på t.ex. http://httpd.apache.org/docs/2.0/programs/ab.html (för 2.0an)

Testa gärna lighttpd och säg hur den uppför sig :)

ccato 2006-03-27 12:05

Om du ska hantera sådär många besökare så ska du INTE låta apache serva statiskt innehåll typ bilder etc. Kör thttpd för bilderna och se till att optimera apache genom att kompilera den själv.

chrizz 2006-03-29 11:45

Citat:

Ursprungligen postat av Micke04
Citat:

Ursprungligen postat av bivald
Vad kör du för OS och server? Kör du en kraftig server med flera processorer (linux) bör du nog kompilera in MPM = worker. Vad ska du köra på sidan? Vilka moduler har du kompilerat in? Ta bort _allt_ som inte är livsnödvändigt..

core mod_access mod_auth mod_log_config mod_logio mod_env mod_setenvif prefork http_core mod_mime mod_status mod_autoindex mod_negotiation mod_dir mod_alias mod_so mod_actions mod_cgid mod_include mod_perl mod_php4 mod_rewrite mod_ssl mod_suexec mod_userdir


Alltså rätt många.. det är en default apt get installation, som jag förstår kanske inte är optimal!

Kan worker ge bättre prestanda trots att det bara är 1 cpu?

Med worker får du bättre kontroll över minnesanvändningen t.ex.

Problemet med denna kraftiga trafikökning och prefork är att det kommer äta rejält med minne, och burken kommer börja swappa antagligen när det blir tungt. Du får slut på children i apache, och det kommer gå åt h-vette =)

Ställ in worker lite saftigare (som någon beskriver i ett tidigare inlägg) och du bör nog vara redo för den där belastningen, ÄVEN om det nog kommer bli tungt så kommer det finnas children kvar som kan behandla alla requests.

Ställ ned keep alive också som någon föreslog. 2 sek hade jag ställt på.

Danielos 2006-04-05 14:52

Nu förstår jag att du får så många besökare, grymt snygg sida med snyggt innehåll!


Alla tider är GMT +2. Klockan är nu 00:22.

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