Apache et mySQL
Fermé
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
-
26 août 2008 à 18:38
Joulieigne Messages postés 1 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 3 janvier 2011 - 3 janv. 2011 à 11:27
Joulieigne Messages postés 1 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 3 janvier 2011 - 3 janv. 2011 à 11:27
A voir également:
- Apache et mySQL
- Apache open office gratuit - Télécharger - Suite bureautique
- Mysql community server - Télécharger - Bases de données
- Mysql gratuit ou payant - Forum MySQL
- Mysql error 1 ✓ - Forum Réseaux sociaux
- Redemarrer apache - Forum Linux / Unix
20 réponses
Tu as plus d'information sur "eZ publish" ? C'est du php ? autre chose ?
Pour moi, le problème est localisé sur ce composant : pour une raison X (à déterminer) il bloque une ressource dans ta base, et donc le nombre de connexions augmente (cf ton netstat), pour la même raison, les requêtes au serveur Apache sont bloquées et se prolongent dans le temps, jusqu'à atteindre la limite du MaxClients. Dans tous les cas, Apache est hors de cause (sauf si dans les logs apache tu vois le nombre de requêtes augmenter) : ce n'est pas lui qui se connecte à MySQL, mais bien ton application. Augmenter le MaxClients ne servira à rien : j'aurais même tendance à le réduire pour empêcher les nouvelles requêtes à ton web de rajouter encore de la charge sur ta base... Ca la "protège" en quelque sorte...
Est-ce que tu as un accès à ta base lorsque le problème survient ? Un "show processlist" en mysql peut te permettre de voir les requêtes en cours et depuis combien de temps elles sont présente, ça te permettrait d'y voir plus clair.
Pour moi, le problème est localisé sur ce composant : pour une raison X (à déterminer) il bloque une ressource dans ta base, et donc le nombre de connexions augmente (cf ton netstat), pour la même raison, les requêtes au serveur Apache sont bloquées et se prolongent dans le temps, jusqu'à atteindre la limite du MaxClients. Dans tous les cas, Apache est hors de cause (sauf si dans les logs apache tu vois le nombre de requêtes augmenter) : ce n'est pas lui qui se connecte à MySQL, mais bien ton application. Augmenter le MaxClients ne servira à rien : j'aurais même tendance à le réduire pour empêcher les nouvelles requêtes à ton web de rajouter encore de la charge sur ta base... Ca la "protège" en quelque sorte...
Est-ce que tu as un accès à ta base lorsque le problème survient ? Un "show processlist" en mysql peut te permettre de voir les requêtes en cours et depuis combien de temps elles sont présente, ça te permettrait d'y voir plus clair.
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 18:41
26 août 2008 à 18:41
Bonjour,
j'ai une question : ton mysql est-il bindé en local ou sur ton adresse de serveur dédié OVH ?
j'ai une question : ton mysql est-il bindé en local ou sur ton adresse de serveur dédié OVH ?
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 18:54
26 août 2008 à 18:54
Euh... Je dirais en local, mais je sais pas comment en être sûr ;)
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 18:57
26 août 2008 à 18:57
Hmmm regardes dans ton fichier /etc/mysql/my.cnf et chercher la ligne "bind-address" et regarde quelle est l'adresse à côté.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 18:59
26 août 2008 à 18:59
Merci ;)
C'est donc bien ça, c'est en local
C'est donc bien ça, c'est en local
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 19:07
26 août 2008 à 19:07
Et tu as quoi dans tes logs apache ou mysql ? quand le problème apparaît les serveurs sont-ils toujours démarrés? Et quels sont les éventuels messages d'erreurs?
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 19:29
26 août 2008 à 19:29
Dans les logs mysql, il n'y a rien de particulier, en dehors de l'enregistrement de chacun des redémarrages :
J'avais désactivé le redémarrage au cours de la nuit dernière pour voir ce qu'il se passait et aucun message n'est apparu
Pour ce qui est d'Apache, il en est tout autre, à l'heure de la panne, on trouve la ligne suivante :
La valeur du MaxClients est pourtant fixée à 150 et notre site n'est plus très très consulté pour le moment...
JC
080826 19:00:01 [Note] /usr/sbin/mysqld: Normal shutdown 080826 19:00:02 [Note] /usr/sbin/mysqld: Shutdown complete 080826 19:00:03 [Note] /usr/sbin/mysqld: ready for connections. Version: '5.0.21-log' socket: '/var/run/mysqld/mysqld.sock' port: 0 Gentoo Linux mysql-5.0.21
J'avais désactivé le redémarrage au cours de la nuit dernière pour voir ce qu'il se passait et aucun message n'est apparu
Pour ce qui est d'Apache, il en est tout autre, à l'heure de la panne, on trouve la ligne suivante :
[Tue Aug 26 04:17:44 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting
La valeur du MaxClients est pourtant fixée à 150 et notre site n'est plus très très consulté pour le moment...
JC
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 19:38
26 août 2008 à 19:38
Et juste avant le Normal Shutdown complete tu as quoi? Et au niveau d'apache lorsque cela survient quel est le message d'erreur sur la page?
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 20:21
26 août 2008 à 20:21
Dans les logs de mySQL, avant le normal shutdown, j'ai le même bloc correspondant au shutdown précédent
Sinon, quand la panne a eu lieu, si l'on cherche à se connecter au site, rien ne s'affiche, de la même manière que si le serveur apache était coupé.
Sinon, quand la panne a eu lieu, si l'on cherche à se connecter au site, rien ne s'affiche, de la même manière que si le serveur apache était coupé.
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 20:32
26 août 2008 à 20:32
Donc apache ne s'arrête pas lui c'est ça? parce que je dirais que le problème vient d'apache et pas de mysql.
Une base SQL qui s'arrête ne rend pas à proprement parler un serveur apache en rade. Souvent tu as une page avec une erreur SQL qui s'affiche comme quoi tu ne peux te connecter à ta base, enfin si le code est bien monté.
Pour moi faut voir du côté apache. Par contre pourquoi mysql s'arrête ça...
Une base SQL qui s'arrête ne rend pas à proprement parler un serveur apache en rade. Souvent tu as une page avec une erreur SQL qui s'affiche comme quoi tu ne peux te connecter à ta base, enfin si le code est bien monté.
Pour moi faut voir du côté apache. Par contre pourquoi mysql s'arrête ça...
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 20:53
26 août 2008 à 20:53
Merci beaucoup de tes conseils et de la grande rapidité de tes réponses.
Je viens de me pencher sur la config de Apache et me suis rendu compte que le paramètre KeepAlive était sur On. Je viens de le passer sur Off. J'en ai profité aussi pour monter le MaxClients à 200 (au lieu de 150) et baisser le timeout à 30 (au lieu de 300).
J'ai retiré le redémarrage automatique, je vais tester le site pour m'assurer qu'il fonctionne correctement et j'attends de voir si il y aura plantage ou non dans les heures à venir ;)
Encore merci de ton aide, je te tiens au courant ;)
Je viens de me pencher sur la config de Apache et me suis rendu compte que le paramètre KeepAlive était sur On. Je viens de le passer sur Off. J'en ai profité aussi pour monter le MaxClients à 200 (au lieu de 150) et baisser le timeout à 30 (au lieu de 300).
J'ai retiré le redémarrage automatique, je vais tester le site pour m'assurer qu'il fonctionne correctement et j'attends de voir si il y aura plantage ou non dans les heures à venir ;)
Encore merci de ton aide, je te tiens au courant ;)
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 21:46
26 août 2008 à 21:46
Oui, oui, j'ai des infos sur eZ publish, c'est un CMS PHP-mySQL.... Du même type que Spip, en fait...
Je laisse du coup les paramètres comme ça, en attendant que ça plante. J'irai voir du coté de mySQL à ce moment-là et t'en dirai plus.
Je laisse du coup les paramètres comme ça, en attendant que ça plante. J'irai voir du coté de mySQL à ce moment-là et t'en dirai plus.
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
26 août 2008 à 22:39
26 août 2008 à 22:39
Dis moi qu'appelles-tu "manière que si le serveur apache était coupé." ? Tu veux dire que tu as une page erreur 404?
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
26 août 2008 à 23:12
26 août 2008 à 23:12
Il semble que les manipulations que j'ai faites n'aient servies à rien, Apache vient de se bloquer
mySQL fonctionne correctement et son processlist monte à 201, soit les 200 MaxClients + la connexion en console.
Une cope de ce que j'obtiens :
J'ai enlevé un certain nombre de lignes au milieu pour ne pas encombrer vos écrans.
J'ai aussi chargé le site en ligne, et rien ne charge.
Au bout d'un certain temps, une page firefox se charge indiquant:
mySQL fonctionne correctement et son processlist monte à 201, soit les 200 MaxClients + la connexion en console.
Une cope de ce que j'obtiens :
mysql> show processlist; +-----+------+-----------+--------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +-----+------+-----------+--------+---------+------+-------+------------------+ | 1 | root | localhost | dompdf | Sleep | 7344 | NULL | NULL | | 2 | root | localhost | dompdf | Sleep | 7342 | NULL | NULL | | 9 | root | localhost | dompdf | Sleep | 7190 | NULL | NULL | | 17 | root | localhost | dompdf | Sleep | 7137 | NULL | NULL | | 19 | root | localhost | dompdf | Sleep | 7113 | NULL | NULL | | 20 | root | localhost | dompdf | Sleep | 7106 | NULL | NULL | ............................................................................... | 594 | root | localhost | dompdf | Sleep | 633 | NULL | NULL | | 595 | root | localhost | dompdf | Sleep | 632 | NULL | NULL | | 599 | root | localhost | dompdf | Sleep | 623 | NULL | NULL | | 602 | root | localhost | dompdf | Sleep | 596 | NULL | NULL | | 606 | root | localhost | dompdf | Sleep | 581 | NULL | NULL | | 610 | root | localhost | dompdf | Sleep | 562 | NULL | NULL | | 611 | root | localhost | dompdf | Sleep | 560 | NULL | NULL | +-----+------+-----------+--------+---------+------+-------+------------------+ 201 rows in set (0.00 sec)
J'ai enlevé un certain nombre de lignes au milieu pour ne pas encombrer vos écrans.
J'ai aussi chargé le site en ligne, et rien ne charge.
Au bout d'un certain temps, une page firefox se charge indiquant:
La connexion avec le serveur a été réinitialisée pendant le chargement de la page. La liaison au réseau a été interrompue pendant la négociation d'une connexion. Veuillez réessayer.
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
27 août 2008 à 02:34
27 août 2008 à 02:34
sans doute y a t'il un souci dans l'installation qui a été faite de eZ Publish et du site sur le serveur...
cependant, pour éviter l'engorgement des process Apache sur mySQL, j'ai ajouté dans /etc/mysql/my.cnf la ligne wait_timeout = 60 qui a résolu mes problèmes.
Je garde un oeil sur le serveur, mais je pense être soulagé de ce souci.
Un grand merci à vous de m'avoir aidé dans ma recherche ;)
JC
cependant, pour éviter l'engorgement des process Apache sur mySQL, j'ai ajouté dans /etc/mysql/my.cnf la ligne wait_timeout = 60 qui a résolu mes problèmes.
Je garde un oeil sur le serveur, mais je pense être soulagé de ce souci.
Un grand merci à vous de m'avoir aidé dans ma recherche ;)
JC
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
27 août 2008 à 10:40
27 août 2008 à 10:40
Je vais monter un site eZ Publish et je te dis si j'ai le même souci.
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
27 août 2008 à 12:19
27 août 2008 à 12:19
Je me suis emballé un peu trop vite... Le serveur était de nouveau planté ce matin. $
En retournant dans les logs je me suis rendu compte qu'il y a avait pour apache un certain nombre d'accès demandé à des fichiers qui n'existent pas (et c'est normal qu'ils n'existent pas, j'ai demandé au webmaster)
J'ai trouvé aussi cette ligne qui date d'avant-hier midi et que je n'avais pas repéré. Elle reste en fait très isolée et ne se répète pas :
Cependant, après les manips de la nuit dernière, j'ai eu du nouveau :
Et ça continue jusqu'à ce qu'on relance le serveur
Bref, je sèche un peu...
Je suis allé voir php.ini et j'ai demandé de limiter le nombre de process MySQL ouverts... Wait'n see
En retournant dans les logs je me suis rendu compte qu'il y a avait pour apache un certain nombre d'accès demandé à des fichiers qui n'existent pas (et c'est normal qu'ils n'existent pas, j'ai demandé au webmaster)
J'ai trouvé aussi cette ligne qui date d'avant-hier midi et que je n'avais pas repéré. Elle reste en fait très isolée et ne se répète pas :
PHP Fatal error: Maximum execution time of 30 seconds exceeded in /home/...
Cependant, après les manips de la nuit dernière, j'ai eu du nouveau :
[Wed Aug 27 06:10:02 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting [Wed Aug 27 11:12:03 2008] [warn] child process 14420 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14421 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14422 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14423 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14424 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14426 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14428 still did not exit, sending a SIGTERM [Wed Aug 27 11:12:03 2008] [warn] child process 14429 still did not exit, sending a SIGTERM ...
Et ça continue jusqu'à ce qu'on relance le serveur
Bref, je sèche un peu...
Je suis allé voir php.ini et j'ai demandé de limiter le nombre de process MySQL ouverts... Wait'n see
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 291
27 août 2008 à 12:38
27 août 2008 à 12:38
Oui j'ai aussi des accès à des pages qui n'existent pas c'est de la recherche en bloc pour trouver une faille sur ton site.
Là il s'agit pour ceux qui le font de trouver si tu as installé un phpmyadmin ou un autre programme permettant l'accès à ton site et à ta base de données, le plus souvent.
Et encore je suis sûr que tu as pas regardé les tentatives de connexions en ssh :-)
Pour limiter les tentatives de connexions en ssh tu peux installer si tu veux fail2ban.
Là il s'agit pour ceux qui le font de trouver si tu as installé un phpmyadmin ou un autre programme permettant l'accès à ton site et à ta base de données, le plus souvent.
Et encore je suis sûr que tu as pas regardé les tentatives de connexions en ssh :-)
Pour limiter les tentatives de connexions en ssh tu peux installer si tu veux fail2ban.
jcrigot
Messages postés
11
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
27 août 2008
27 août 2008 à 14:43
27 août 2008 à 14:43
Ok, je ne savais pas pour les tentatives en http.
J'avais déjà consulté les logs ftp et ssh, mais là, j'y suis habitué :D
Je suis en train de me demander si le problème ne serait pas aussi lié à PHP. Je regarde donc de ce coté aussi, mais sans tellement de succès...
J'avais déjà consulté les logs ftp et ssh, mais là, j'y suis habitué :D
Je suis en train de me demander si le problème ne serait pas aussi lié à PHP. Je regarde donc de ce coté aussi, mais sans tellement de succès...
Urielxx
Messages postés
190
Date d'inscription
mardi 26 août 2008
Statut
Membre
Dernière intervention
25 juin 2013
46
27 août 2008 à 21:15
27 août 2008 à 21:15
Le nombre connexion en sleep sur ta BDD ne me parait pas normal : certaines connexions sont là depuis plus de 10 minutes et c'est anormal si tu fais du php (normalement, la connexion php ne dure pas). Par contre, je me demande ce que fait ton application du coup. Elle boucle ? Si oui, tu devrait consommer plein de CPU, je pense que tu t'en serais aperçu. Tu as essayé de savoir ce que fabriquait le php ? (avec un lsof ou un strace) ?
Essaie de mettre un MaxRequestsPerChild à 1 dans ton Apache : c'est lourd, mais ça force un nouveau child après chaque requête http, et donc tu ne devrais pas avoir ces requêtes qui trainent..
Une question ; dans tes lgos apache, tu vois des requêtes qui durent très longtemps ? Si oui, ce sont elles les coupables, p-etre qu'il s'agit d'une page en particulier qui pose problème.
Et sinon, il y a un connect-timeout pour les clients mysql, mais je ne sais pas comment ton appli gère ça...
Essaie de mettre un MaxRequestsPerChild à 1 dans ton Apache : c'est lourd, mais ça force un nouveau child après chaque requête http, et donc tu ne devrais pas avoir ces requêtes qui trainent..
Une question ; dans tes lgos apache, tu vois des requêtes qui durent très longtemps ? Si oui, ce sont elles les coupables, p-etre qu'il s'agit d'une page en particulier qui pose problème.
Et sinon, il y a un connect-timeout pour les clients mysql, mais je ne sais pas comment ton appli gère ça...
Joulieigne
Messages postés
1
Date d'inscription
lundi 3 janvier 2011
Statut
Membre
Dernière intervention
3 janvier 2011
3 janv. 2011 à 11:27
3 janv. 2011 à 11:27
Bonjour,
Je vois que le POST n'est pas récent mais les problèmes informatique demeurent ! ;-)
J'ai le même soucis sur un site en eZpublish 4.2.0.
Le site marche plutôt pas trop mal, sauf quand il y a un peu de trafic, là les processus d'Apache se multiplient, le CPU augmente jusqu'à arriver à saturation, et le site est inaccessible. Il faut attendre le timeout des connexions httpd pour retrouver le site, voir relancer les services.
J'arrive à bien reproduire le problèmes, j'utilise linkExaminer qui me scanne toutes les url du site créant un fort trafic virtuel et là c'est le drame ! :p
J'ai à peu de chose près les mêmes symptômes que jcrigot et à priori une config qui semble similaire. Pas plus de message d'erreur dans les LOG, seulement dans ceux d'Apache :
[Tue Aug 26 04:17:44 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting
J'ai un peu tout essayé sans savoir vraiment quoi modifier :
- modification de la conf Apache
- modification de la conf de MySQL
et là je sèche...
Quelqu'un aurait il rencontré et résolu le même problème ?
Merci pour vos réponses.
Je vois que le POST n'est pas récent mais les problèmes informatique demeurent ! ;-)
J'ai le même soucis sur un site en eZpublish 4.2.0.
Le site marche plutôt pas trop mal, sauf quand il y a un peu de trafic, là les processus d'Apache se multiplient, le CPU augmente jusqu'à arriver à saturation, et le site est inaccessible. Il faut attendre le timeout des connexions httpd pour retrouver le site, voir relancer les services.
J'arrive à bien reproduire le problèmes, j'utilise linkExaminer qui me scanne toutes les url du site créant un fort trafic virtuel et là c'est le drame ! :p
J'ai à peu de chose près les mêmes symptômes que jcrigot et à priori une config qui semble similaire. Pas plus de message d'erreur dans les LOG, seulement dans ceux d'Apache :
[Tue Aug 26 04:17:44 2008] [error] server reached MaxClients setting, consider raising the MaxClients setting
J'ai un peu tout essayé sans savoir vraiment quoi modifier :
- modification de la conf Apache
- modification de la conf de MySQL
et là je sèche...
Quelqu'un aurait il rencontré et résolu le même problème ?
Merci pour vos réponses.