2012-03-06 1 views
0

J'ai un VPS de 1 Go et Apache ralentit à un crawl presque du démarrage. J'ai couru ApacheBench sur un fichier static.html et les choses ne diffèrent pas. Cependant, le site aura à la fois MySQL et PHP et un grand volume de requêtes AJAX, donc je voudrais accorder pour cela.Optimisation des performances Apache avec 1 Go avec httpd.conf

Lorsque je redémarre, les journaux d'erreurs montrent que ce presque immédiatement:

serveur [error] a atteint paramètre MaxClients, envisager d'augmenter le paramètre MaxClients

ab -n 1000 -c 1000 

montre:

Document Path:   /static.html 
Document Length:  7 bytes 

Concurrency Level:  1000 
Time taken for tests: 57.784 seconds 
Complete requests:  1000 
Failed requests:  64 
    (Connect: 0, Receive: 0, Length: 64, Exceptions: 0) 
Write errors:   0 
Total transferred:  309816 bytes 
HTML transferred:  6552 bytes 
Requests per second: 17.31 [#/sec] (mean) 
Time per request:  57784.327 [ms] (mean) 
Time per request:  57.784 [ms] (mean, across all concurrent requests) 
Transfer rate:   5.24 [Kbytes/sec] received 

Connection Times (ms) 
       min mean[+/-sd] median max 
Connect:  0 25 13.4  25  48 
Processing: 1070 16183 15379.4 9601 57737 
Waiting:  0 14205 15176.5 9591 42516 
Total:  1070 16208 15385.0 9635 57783 

Percentage of the requests served within a certain time (ms) 
    50% 9635 
    66% 20591 
    75% 20629 
    80% 36357 
    90% 42518 
    95% 42538 
    98% 42556 
    99% 42560 
100% 57783 (longest request) 

Si je cours ab sur un fichier php, il se termine parfois, la plupart des temps, il ne sera pas et obtient parfois des erreurs comme

apr_socket_recv: Connection reset by peer (104) 

et

socket: No buffer space available (105) 

articles httpd.conf:

Timeout 10 
KeepAlive On 
MaxKeepAliveRequests 100 
KeepAliveTimeout 1 

<IfModule prefork.c> 
StartServers 3 
MinSpareServers 5 
MaxSpareServers 9 
ServerLimit 40 
MaxClients 40 
MaxRequestsPerChild 5000 
</IfModule> 

Top ... (CPU et 1min de charge sont très erratiques au cours test):

top - 10:44:51 up 11:50, 3 users, load average: 0.17, 0.42, 0.90 
Tasks: 84 total, 2 running, 82 sleeping, 0 stopped, 0 zombie 
Cpu(s): 2.8%us, 3.1%sy, 0.0%ni, 94.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 1793072k total, 743604k used, 1049468k free,  0k buffers 
Swap:  0k total,  0k used,  0k free,  0k cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND        
21831 mysql  18 0 506m 71m 6688 S 0.7 4.1 4:03.18 mysqld        
1828 root  15 0 113m 52m 2052 S 0.0 3.0 0:02.85 spamd         
1830 popuser 18 0 113m 51m 956 S 0.0 2.9 0:00.00 spamd         
8012 apache 15 0 327m 35m 17m S 3.7 2.0 0:11.83 httpd         
8041 apache 15 0 320m 28m 15m S 0.0 1.6 0:11.83 httpd         
8022 apache 15 0 321m 27m 14m S 2.3 1.6 0:11.05 httpd         
8033 apache 15 0 320m 27m 14m S 1.7 1.6 0:10.06 httpd 

Y at-il quelque chose o bvious c'est faux ici? ou quelle serait ma prochaine étape dans le dépannage?

Répondre

3

On dirait que vous n'avez pas assez de mémoire - 1 Go n'est pas beaucoup quand vous utilisez PHP avec Prefork et MySQL sur le même serveur. Vos MaxClients devraient probablement être 10-20, pas 40.

Il y a quelques semaines, j'ai écrit un script pour régler Apache httpd qui pourrait probablement aider à déterminer les valeurs maximales pour votre serveur. Vous pouvez trouver l'entrée du blog ici http://surniaulula.com/2012/11/09/check-apache-httpd-mpm-config-limits/ et le script est également sur Google Code.

Profitez-en!

js.

+0

Merci pour le lien fourni, un gagne -1 –

Questions connexes