1 votes

Apache continue à échouer et ne redémarre pas proprement - Adresse déjà utilisée : make_sock : could not bind to address

J'ai un serveur virtuel avec 1 Go de RAM qui fonctionne sous CentOS 5.4.

Il a également plesk en cours d'exécution avec un certain nombre de sites web wordpress fonctionnant sans aucun problème - la plupart du temps.

Récemment, il semble que de temps en temps, Apache semble tomber en panne. Si vous appelez www.mysite.com, le temps semble s'écouler.

Je tente un redémarrage d'apache et j'obtiens l'erreur suivante.

Stopping httpd:                                            [FAILED]
Starting httpd: (98)Address already in use: make_sock: could not bind to address                                                [::]:80
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
                                                           [FAILED]

Maintenant je sais à 100% qu'il n'y a pas d'autre service fonctionnant sur le port 80 autre qu'apache. Mais apache ne semble pas répondre à la commande d'arrêt. C'est comme s'il était coincé dans les limbes !

Finalement, j'ai découvert que je peux forcer manuellement apache à s'arrêter en exécutant

killall -9 httpd

Ensuite, une commande de redémarrage fonctionne.

Mes questions sont les suivantes :

1.) Qu'est-ce qui pourrait provoquer une telle chose ? À ma connaissance, le serveur ne reçoit pas de trafic important. 2.) Que puis-je faire sur le serveur pour exécuter automatiquement la commande ci-dessus si cela se produit lorsque je ne suis pas là pour le faire manuellement.

Merci,

Ed

1 votes

Je suppose qu'il s'agit de contenu dynamique, et pas seulement de quelques fichiers html et d'images. Dans quelle langue ? Comment est-il servi ? (par exemple, fcgi ? mod_whatever ? serveur d'application séparé comme Rails ou jsp, avec mod_whatever ou par proxy ?)

0 votes

Oui c'est dynamique - WordPress (PHP) utilisant fastcgi.

1voto

bigmattyh Points 9167

J'ai eu un problème similaire avec certains plugins que j'utilisais, et jusqu'à ce que j'ai diagnostiqué celui qui causait le problème, j'utilisais cron pour tuer et redémarrer apache et mysql toutes les heures.

0 votes

Merci Warren - bonne idée - je vais essayer pendant que je passe en revue les plugins.

0voto

Eric Noob Points 531

Ce type de problème (processus qui ne se terminent pas normalement) est souvent causé par le fait que le processus est bloqué en attente d'entrées/sorties (par exemple, d'une connexion réseau, d'un tuyau local, d'un système de fichiers, etc). Vous pouvez parfois utiliser strace pour comprendre ce qui se passe, bien qu'en utilisant strace effectivement est probablement un question totalement différente .

Le résultat de ce qui suit ps peut être intéressant :

ps -e -o pid,wchan:20,cmd | grep httpd

Cela vous indiquera le "nom de la fonction noyau dans laquelle le processus est endormi", ce qui peut aider à orienter votre recherche.

0voto

David Remy Points 146

Je rechercherais dans tous vos fichiers de configuration Apache l'option Listen pour vérifier que vous n'avez qu'une seule écoute sur le port 80. Dans CentOS 6, il y a une directive dans ssl.conf et si vous copiez une directive d'un autre http.conf dans la boîte CentOS 6, vous rencontrerez ce problème sur 443 également si vous ne faites pas attention.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X