Apache2 tourne en rond


#1

Hello,

A interval régulier, apache2 part en sucette sur notre serveur, il n’est pas planté, il répond tjs, mais est super super lent. Et uniquement lui, tous les autres process tournent sans problèmes. Ensuite si je fais un simple apache2ctl stop et apache2ctl start, tout revient à la normale, ce qui est bizard c’est que j’ai un autre serveur avec la même configuration, et jamais aucun problème dans apache2 (la seule différence réside que ce serveur ci a beaucoup moins de requêtes).

Nous n’avons même pas réussi à cerner le problème, ne sachant pas si cela provient de apach2, php4 ou php5 (tous les deux en cgi) ou même de MySql. Nous avons remarqué lors d’un “ps ax” que plusieurs processe php4 était en cours, ainsi que des apache2.

Je me demande si cela ne provient pas du fait que simplement apache2 ne créé pas assez de processus child, mais je préfère poser la question.

Voici notre config :

Debian Stable AMD64.
Apache2 installé via package.
SuPHP installé via package.
PHP4 et PHP5 en cgi installé via les packages de DotDeb.
Mysql installé via package de DotDeb.

Ensuite nous avons ca dans notre apache2.conf : [code]

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

StartServers 5 MinSpareServers 5 MaxSpareServers 15 MaxClients 25 MaxRequestsPerChild 0

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

StartServers 2 MaxClients 150 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0

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)

NumServers 5 StartThreads 5 MinSpareThreads 5 MaxSpareThreads 10 MaxThreadsPerChild 20 MaxRequestsPerChild 0 AcceptMutex fcntl [/code]

Voilà si qqn a une idée, n’hésitez pas.

Dans l’espoir que… et déjà merci.

a+


#2

Est-ce que l’émulation IPv6 est activée sur ton système ? Apparement, ce truc là, c’est pas encore le top…
Si c’est le cas, essayes de désactiver, je le fait toujours et ca change vraiment les choses…
Pour le savoir: ifconfig -a
Si tu as quelque chose comme “sit0” dans tes interfaces, c’est que l’émulation est activée.
Après une install, c’est la 1ère chose que je désactive lors de la recompilation du noyau.
Mais bon, dans mon cas, je parle de surf, ou de ftp sur internet, pas de serveur web, alors le problème est peut-être différent…


#3

Par facile d’interpréter ce genre de description :laughing:

mais à première vue je pencherais pour une vérificiation des fichiers de configurations hostname, hosts, resolv.conf, etc.


#4

Bon ben je vais tenter d’être un peu plus clair :

Le serveur apache2 commence à tourner en rond à partir d’un temps variable, pouvant aller de 1 à 2 heures et peut même tenir facilement 1 ou deux jours… Ensuite à partir de ce moment là, le serveur apache2 devient lent, n’arrive plus à traiter les données dans un temps raisonnable, pouvant aller jusqu’à 2 minutes pour une simple page.
Les autres services ne sont par contre pas du tout touché par ce problème (le ftp fonctionne sans problème, mysql aussi)…

Par contre il n’y a rien dans les logs, ni dans ceux de apache ni dans le syslog. Dans apache il y a juste un “trou” dans les logs, partant du temps à mon avis ou il tourne en rond juqu’au moment ou on le redémarre. Le syslog est quant à lui pas du tout affecté, aucun problème, les logs continuent…

Voilà, c’est à peu près tout ce que j’ai… ce qui est très bizard c’est que le second serveur physique fonctionne sans problème, avec la même configuration matériel et la même configuration du kernel…

merci encore, a+


#5

Merci du complément d’info… Ca me fait penser que ma piste n’est pas la bonne


#6

Jabba ton résonnement n’est pas fou et je penche également vers un problème de communication réseau au lieu d’un problème d’apache. Difficile sans message d’erreur exact de trouver le problème. Mais si apache ne renvoie pas d’erreur dans les logs cela signifie en thérorie qu’il tourne correctement.

Le fait qu’il fonctionne bien lors d’un restart et perd la tête au bout d’un moment me fait penser à une mauvaise configuration DNS par exemple un cache local. C’est pourquoi je te conseille de vérifier tout ce qui touche à la configuration du réseau.


#7

A mon avis aussi, c’est probable qu’il s’agisse d’un problème de config réseau, mais je ne pense plus à IPv6 dans le cas présent.
Mais je ne connais pas assez apache pour avoir d’autres idées :confused:
Ou comme tu le dis, peut-être un cache.
Ca me fait penser que apache lui aussi peut gérer un cache, non ?


#8

un “fix”, peut être, en attendant, si le serveur est en production, serait de provoquer un restart toutes les n minutes…
Sinon, ca mériterait aussi de regarder la charge mêmoire du serveur, pour info, lorsqu’une surcharge est détectée.


#9

Hello,

En fait je viens de trouver, “je crois”, la source du problème. Cela proviendrait en fait de MySql qui est foireux et qui tombe souvent, voir très très souvent. Si on lui fait de petites requetes, genre juste un select, aucun problème, par contre des choses comme phpbb ou autre, tout foire complètement très souvent, et si je redémare le serveur mysql plus aucun problème…

QQN a une idée? un problème de connexion permanente ou je ne sais pas?


#10

[quote=“MattOTop”]un “fix”, peut être, en attendant, si le serveur est en production, serait de provoquer un restart toutes les n minutes…
Sinon, ca mériterait aussi de regarder la charge mêmoire du serveur, pour info, lorsqu’une surcharge est détectée.[/quote]
valable aussi pour mysql


#11

Non c’est pas une solution valable.

Par contre je vois quand je fais un mysqlmanager

060108 20:35:43 guardian: starting instance mysqld
060108 20:35:43 starting instance mysqld
060108 20:35:44 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

060108 20:35:44 [ERROR] Aborting

C’est très bizard il fait ca 4 a 5 fois par secondes.
De plus avec un ps ax je n’ai qu’un process mysql, alors que je devrais je pense logiquement en avoir plusieurs.
25087 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe
26717 pts/0 S 0:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
26993 pts/0 S 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld

Je n’ai que ceux la, et aucun autre…

QQN a une idée? les packages proviennent de dotdeb, mysql-server-5.0 pour amd64. J’ai beau désinstaller, réinstaller, rien n’y fait…


#12

Quand tu désinstalles assures-toi de virer les bases de données pas défaut (mysql et test) et tous les fichiers de configurations également.


#13

Je l’ai fait, rien n’a changé.
Maintenant j’ai tenté de réinstallé MySql 4.1 depuis les packages stables de debian. Ca ne semble plus planter, mais il faut attendre un peu que du monde commence à s’y connecter… et j’ai tjs qu’un seul process MySql qui tourne, et ca je ne sais pas si c’est normal…


#14

Oui c’est normal d’avoir une seule instance de mysql et plusieurs d’Apache