Serveur lent malgré excellent "top"

Nouveau WRInaute
Bonsoir,

J'ai un serveur php/apache qui répond très lentement aux requêtes HTTP, je ne comprends pas pourquoi.

En faisant un "top", tout a l'air normal :
Code:
top - 23:05:55 up 145 days,  6:56,  1 user,  load average: 0.05, 0.06, 0.09
Tasks: 208 total,   1 running, 206 sleeping,   1 stopped,   0 zombie
Cpu(s):  2.0%us,  0.3%sy,  0.0%ni, 97.2%id,  0.0%wa,  0.2%hi,  0.3%si,  0.0%st
Mem:   2047128k total,  1813424k used,   233704k free,   236336k buffers
Swap:   522104k total,      116k used,   521988k free,   844624k cached

avec un ps aux j'ai une centaine de lignes relatives à apache2, en voici un extrait:
Code:
www-data 25326  0.0  0.3 211616  8024 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25327  0.0  0.6 215060 14204 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25328  0.0  0.4 213956 10096 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25329  0.0  0.6 214784 13628 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25330  0.0  0.6 214656 13632 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25331  0.0  0.6 214976 13720 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25332  0.1  0.7 215188 14516 ?        S    22:49   0:01 /usr/sbin/apache2 -k start
www-data 25333  0.0  0.6 214724 13984 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25334  0.1  0.7 214984 14640 ?        S    22:49   0:01 /usr/sbin/apache2 -k start
www-data 25335  0.0  0.6 214200 13264 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25336  0.0  0.6 215020 14180 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25337  0.0  0.6 214624 13412 ?        S    22:49   0:00 /usr/sbin/apache2 -k start
www-data 25395  0.0  0.6 214916 14080 ?        S    22:50   0:01 /usr/sbin/apache2 -k start
www-data 25397  0.0  0.6 214980 13660 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25398  0.0  0.5 214680 11984 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25399  0.0  0.6 214720 13364 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25403  0.0  0.5 214516 11224 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25404  0.0  0.5 214684 11716 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25405  0.0  0.6 214940 14112 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25407  0.0  0.7 214868 14480 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25408  0.0  0.6 214920 14220 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25409  0.0  0.6 214868 12744 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25410  0.0  0.6 214880 13472 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25411  0.0  0.6 214744 14324 ?        S    22:50   0:01 /usr/sbin/apache2 -k start
www-data 25412  0.0  0.7 214924 14452 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25413  0.0  0.6 214680 12924 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25414  0.0  0.6 214664 13164 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25415  0.0  0.7 214724 14464 ?        S    22:50   0:00 /usr/sbin/apache2 -k start
www-data 25416  0.0  0.6 214980 13452 ?        S    22:50   0:00 /usr/sbin/apache2 -k start

(je n'en ai mis qu'un bout. J'en ai 4 fois plus de process). Ca peut être la cause du problème ??

Merci
 
WRInaute accro
Non, c'est normal qu'il y ait beaucoup de processus Apache (cf MaxClients, MinSpareServers, MaxSpareServers, etc.).

Il répond lentement à toutes les requêtes (y compris un bête fichier statique genre image), uniquement les requêtes dynamiques (php), uniquement les requêtes dynamiques avec accès SQL?

Dans le premier cas, quelques pistes:
- tu as HostnameLookups à on et un problème de config DNS
- tu as un problème réseau (dans ce cas d'autres choses seraient lentes aussi, genre ftp, ssh...)

Dans le deuxième cas, ça peut être un problème de complexité de tes scripts.

Dans le troisième cas, ditto au niveau SQL (et/ou problèmes sur le serveur SQL s'il est différent), index manquants, etc.

Jacques.
 
Nouveau WRInaute
Les fichiers statiques sont eux aussi lents, par contre mon HostnameLookups est Off...
ssh m'a l'air de fonctionner à vitesse normal, pas de décalage...

Ce problème continue d'apparaître de temps en temps, pas tout le temps. Je ne vois pas bien où chercher
 
Nouveau WRInaute
Bonsoir,

Le problème continue d'apparaître :
- images statiques et pages php très lentes d'accès
- top équivalent à celui montré en haut
- lorsque ça plante, le serveur reçoit 8 - 12 requêtes php par seconde

Est-ce que ça peut venir d'une configuration inadaptée de "apache2.conf" à ce rythme de requêtes ? Voici mon fichier apache2.conf :

Code:
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 100

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

##
## 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 mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# 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 mpm_worker_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
 
Nouveau WRInaute
Bonsoir,

Désolé de relancer le sujet, mais je reste sans solution et c'est un gros problème pour moi.

Ce soir de nouveau, le serveur est devenu très lent. Long temps de réponse aux requêtes http. Par contre ssh avait l'air de fonctionner normalement.
J'ai fait un :
/etc/init.d/apache2 stop
/etc/init.d/apache2 start

et après ça c'est rentré dans l'ordre ! Ca peut être un indice pour comprendre ce qui se passe ... Comment savoir si apache2 a atteint par exemple le maximum de process qu'il peut ouvrir - ou si c'est dû à autre chose ?

Merci !
 
WRInaute accro
Un serveur sans pare-feu c'est de la folie :wink:

Installe Failban ça devrait régler ton problème.

Une fois intallé, tu lui rajoutes ce filtre.

Ps : si tu ne souhaites pas rencontrer d'autres problème du même ordre, je te conseille vivement de bucher un minimum la sécurité d'un serveur.
 
Discussions similaires
Haut