Problème de configuration de serveur web
Bonjour,
Je suis entrain de me battre avec la configuration de mon serveur, et je n'arrive à rien. Voici des infos sur le serveur :
Hardware : Processor E5620 2400 Mhz 2 CPU 4 Cores, 8 GB RAM
OS : Linux version 2.6.32-5-amd64 (Debian 2.6.32-38) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Mon Oct 3 03:59:20 UTC 2011
La machine n'héberge qu'un seul site internet mais qui a un gros traffic (1 million de pages vues par jour, 4000 visiteurs simultanés aux heures de pointes), pas de streaming, pas de fichiers hébergés sur le serveur à télécharger, juste des pages web et des images, qui sont déjà pas mal optimisées (compressées, sprites, mise en cache,..).
J'ai donc installé dessus PHP5, Apache/2.2.16 (Debian), MySQL 5.1.49 et qques autres trucs sans importances.
Mon soucis est que Apache ne répond pas du tout comme je le souhaite.
Lorsque je fais un top, je vois le process mysqld qui tourne entre 10 et 50%, et tous les process apache2 qui suivent, qui tournent entre 0 et 2%. Au niveau des CPU(s) used, même à l'heure de pointe ca dépasse pas 10%.
Le soucis est que de temps en temps, Apache me lache, dans mon top je vois tous les process disparaitr et finalement ne reste que le process mysqld.. Si je lance un "service apache2 statuts", ca me dit running..
Si je ne fais rien et que j'attends quelques secondes (parfois 1-2 minutes), ca se relance tout seul, et les process reviennent.
En dehors de ça, il est parfois quasiment impossible de se connecter à l'heure de pointe sur le site, comme si Apache ne répondait pas, où était surchargé.. Pourtant le serveur est loin d'utiliser sa pleine capacité....
Je vous file les valeurs critiques de la config d'apache :
/etc/apache2/apache2.conf
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Timeout 20
KeepAlive Off
MaxKeepAliveRequests 300
KeepAliveTimeout 10
<IfModule mpm_prefork_module>
StartServers 10
MinSpareServers 10
MaxSpareServers 50
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 400
</IfModule>
<IfModule mpm_worker_module>
StartServers 10
MinSpareThreads 20
MaxSpareThreads 100
ThreadLimit 128
ThreadsPerChild 20
ServerLimit 512
MaxClients 512
MaxRequestsPerChild 400
</IfModule>
<IfModule mpm_event_module>
StartServers 10
ServerLimit 512
MaxClients 512
MinSpareThreads 20
MaxSpareThreads 100
ThreadLimit 128
ThreadsPerChild 20
MaxRequestsPerChild 400
</IfModule> |
/etc/php5/apache2/php.ini
Code:
1 2
| max_execution_time=30
memory_limit = 64M |
/etc/mysql/my.cnf
Code:
1 2 3 4 5 6 7 8 9 10 11
| key_buffer = 64M
max_allowed_packet = 32M
thread_stack = 384K
thread_cache_size = 64M
max_connections = 500
table_cache = 256M
thread_concurrency = 16
query_cache_limit = 4M
query_cache_size = 256M |
Dans mon phpmyadmin, mon max de connexions simultanées est 380 (c'est élevé mais je crois que c'est à cause des problèmes de lags tout ça).
Le traffic est d'un giga par heure en moyenne, 100 requêtes par seconde en moyenne.
Mais mysql m'a l'air de tourner tout à fait correctement contrairement à Apache.
J'ai cherché sur les forums, lu des trucs concernant tel ou tel paramètre, essayé une multitudes de valeurs, peut-être je les combinais mal je sais pas, mais ça commence à durer et les visiteurs en ont marre et moi plus qu'eux encore.
J'avais ces soucis sur un précédent serveur, j'ai pris celui ci beaucoup plus puissant que l'ancien, et rien ne change, c'est même parfois pire.. Je suis certain que c'est un soucis de config. Un expert résoudrait probablement ça en 10 minutes chrono..
Si quelqu'un a des solutions à me proposer, ou connait quelqu'un qui s'y connait en configuration serveur web linux et qui serait prêt à m'aider, une aide serait vraiment la bienvenue.
Merci d'avance de m'avoir lu, j'espère que ces infos peuvent vous servir.