Mon système est Ubuntu 18.04, Apache2, PHP 7.2. J'ai un problème très étrange lorsque j'accède à FTP depuis Winscp ou Filezilla.
Le problème est qu'après avoir mis fin à la session FTP et essayé d'accéder à mon site Web, ce site est inaccessible. Je dois redémarrer Apache2 pour que le site Web fonctionne à nouveau.
Comment puis-je résoudre ça?
Journaux Apache:
[Wed Aug 29 12:26:20.658550 2018] [core:warn] [pid 6112] AH00098: pid file /var/run/Apache2/Apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Aug 29 12:26:20.664959 2018] [mpm_prefork:notice] [pid 6112] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0h configured -- resuming normal operations
[Wed Aug 29 12:26:20.665014 2018] [core:notice] [pid 6112] AH00094: Command line: '/usr/sbin/Apache2'
[Wed Aug 29 12:27:27.563287 2018] [mpm_prefork:emerg] [pid 6121] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:27:27.566692 2018] [mpm_prefork:emerg] [pid 6120] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:27:27.571578 2018] [mpm_prefork:emerg] [pid 6125] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:27:27.573969 2018] [mpm_prefork:emerg] [pid 6129] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:27:27.577938 2018] [mpm_prefork:emerg] [pid 6128] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:27:27.744667 2018] [core:alert] [pid 6112] AH00050: Child 6120 returned a Fatal error... Apache is exiting!
[Wed Aug 29 12:27:27.744807 2018] [:emerg] [pid 6112] AH02818: MPM run failed, exiting
[Wed Aug 29 12:27:33.534483 2018] [core:warn] [pid 6425] AH00098: pid file /var/run/Apache2/Apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Aug 29 12:27:33.551045 2018] [mpm_prefork:notice] [pid 6425] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0h configured -- resuming normal operations
[Wed Aug 29 12:27:33.551087 2018] [core:notice] [pid 6425] AH00094: Command line: '/usr/sbin/Apache2'
[Wed Aug 29 12:33:23.273811 2018] [mpm_prefork:notice] [pid 6425] AH00169: caught SIGTERM, shutting down
[Wed Aug 29 12:33:23.463364 2018] [mpm_prefork:notice] [pid 6566] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0h configured -- resuming normal operations
[Wed Aug 29 12:33:23.463471 2018] [core:notice] [pid 6566] AH00094: Command line: '/usr/sbin/Apache2'
[Wed Aug 29 12:34:12.206500 2018] [mpm_prefork:emerg] [pid 6686] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:34:12.534263 2018] [core:alert] [pid 6566] AH00050: Child 6686 returned a Fatal error... Apache is exiting!
[Wed Aug 29 12:34:12.534321 2018] [:emerg] [pid 6566] AH02818: MPM run failed, exiting
[Wed Aug 29 12:34:12.536893 2018] [mpm_prefork:emerg] [pid 6689] (22)Invalid argument: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:34:12.539094 2018] [mpm_prefork:emerg] [pid 6688] (22)Invalid argument: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:36:21.687348 2018] [core:warn] [pid 9332] AH00098: pid file /var/run/Apache2/Apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Aug 29 12:36:21.709583 2018] [mpm_prefork:notice] [pid 9332] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0h configured -- resuming normal operations
[Wed Aug 29 12:36:21.709650 2018] [core:notice] [pid 9332] AH00094: Command line: '/usr/sbin/Apache2'
[Wed Aug 29 12:39:10.500747 2018] [mpm_prefork:emerg] [pid 9347] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.502052 2018] [mpm_prefork:emerg] [pid 9336] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.507276 2018] [mpm_prefork:emerg] [pid 9337] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.509953 2018] [mpm_prefork:emerg] [pid 9338] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.514020 2018] [mpm_prefork:emerg] [pid 9346] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.522017 2018] [mpm_prefork:emerg] [pid 9343] (43)Identifier removed: AH00144: couldn't grab the accept mutex
[Wed Aug 29 12:39:10.850698 2018] [core:alert] [pid 9332] AH00050: Child 9336 returned a Fatal error... Apache is exiting!
[Wed Aug 29 12:39:10.851450 2018] [:emerg] [pid 9332] AH02818: MPM run failed, exiting
[Wed Aug 29 12:39:19.905390 2018] [core:warn] [pid 9605] AH00098: pid file /var/run/Apache2/Apache2.pid overwritten -- Unclean shutdown of previous Apache run?
[Wed Aug 29 12:39:19.924748 2018] [mpm_prefork:notice] [pid 9605] AH00163: Apache/2.4.29 (Ubuntu) OpenSSL/1.1.0h configured -- resuming normal operations
[Wed Aug 29 12:39:19.924789 2018] [core:notice] [pid 9605] AH00094: Command line: '/usr/sbin/Apache2'
Permettez-moi d'ajouter un peu à votre réponse Fathey Abdel Slam. De ici :
Un mutex est la méthode de synchronisation de base utilisée dans Traffic Server pour protéger les données d'un accès simultané par plusieurs threads. Un mutex agit comme un verrou qui protège les données d'un thread de programme contre l'accès par un autre thread.
Et de /etc/Apache2/Apache2.conf
:
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the Mutex documentation (available
# at <URL:http://httpd.Apache.org/docs/2.4/mod/core.html#mutex>);
# you will save yourself a lot of trouble.
Les mécanismes mutex suivants sont disponibles:
par défaut | Oui
Ceci sélectionne l'implémentation de verrouillage par défaut, telle que déterminée par APR. L'implémentation de verrouillage par défaut peut être affichée en exécutant httpd avec l'option -V.
aucun | non
Cela désactive efficacement le mutex et n'est autorisé pour un mutex que si le module indique qu'il s'agit d'un choix valide. Consultez la documentation du module pour plus d'informations.
posixsem
Il s'agit d'une variante mutex basée sur un sémaphore Posix.
Avertissement
La propriété du sémaphore n'est pas récupérée si un thread dans le processus contient les erreurs de segmentation mutex, entraînant un blocage du serveur Web.
sysvsem
Il s'agit d'une variante mutex basée sur un sémaphore SystemV IPC. Avertissement
Il est possible de "fuir" les sémaphores SysV si les processus se bloquent avant la suppression du sémaphore. Sécurité
L'API sémaphore permet une attaque par déni de service par tous les CGI fonctionnant sous le même uid que le serveur Web (c'est-à-dire tous les CGI, sauf si vous utilisez quelque chose comme suexec ou cgiwrapper).
sem
Cela sélectionne la "meilleure" implémentation de sémaphore disponible, en choisissant entre Posix et SystemV IPC sémaphores, dans cet ordre).
pthread
Il s'agit d'une variante de mutex basée sur des mutex de threads Posix inter-processus. avertissement
Sur la plupart des systèmes, si un processus enfant se termine anormalement tout en maintenant un mutex qui utilise cette implémentation, le serveur se bloquera et cessera de répondre aux demandes. Lorsque cela se produit, le serveur nécessitera un redémarrage manuel pour récupérer.
Solaris et Linux sont des exceptions notables car ils fournissent un mécanisme qui permet généralement de récupérer le mutex après la fin anormale d'un processus enfant tout en maintenant un mutex.
Si votre système est compatible POSIX ou s'il implémente la fonction pthread_mutexattr_setrobust_np (), vous pourrez peut-être utiliser l'option pthread en toute sécurité.
fcntl:/chemin/vers/mutex
Il s'agit d'une variante de mutex où un fichier physique (lock-) et la fonction fcntl () sont utilisés comme mutex. avertissement
Lorsque plusieurs mutex basés sur ce mécanisme sont utilisés dans des environnements multi-threads et multi-processus, des erreurs de blocage (EDEADLK) peuvent être signalées pour des opérations mutex valides si fcntl () n'est pas compatible avec les threads, comme sur Solaris.
troupeau:/chemin/vers/mutex
Ceci est similaire à la méthode fcntl:/path/to/mutex à l'exception que la fonction flock () est utilisée pour fournir le verrouillage de fichier.
fichier:/chemin/vers/mutex
Ceci sélectionne la "meilleure" implémentation de verrouillage de fichier disponible, en choisissant entre fcntl et flock, dans cet ordre.
La plupart des mécanismes ne sont disponibles que sur certaines plateformes, où la plateforme sous-jacente et APR le prennent en charge. Les mécanismes qui ne sont pas disponibles sur toutes les plates-formes sont posixsem, sysvsem, sem, pthread, fcntl, flock et file.
Avec les mécanismes basés sur les fichiers fcntl
et flock, le chemin, s'il est fourni, est un répertoire où le fichier de verrouillage sera créé. Le répertoire par défaut est le répertoire de fichiers d'exécution de httpd relatif à ServerRoot
. Utilisez toujours un système de fichiers sur disque local pour/chemin/vers/mutex et jamais un répertoire résidant sur un système de fichiers NFS ou AFS.
Le basename
du fichier sera le mutex type
, une chaîne d'instance facultative fournie par le module, et à moins que OmitPID keyword
est spécifié, l'ID de processus du processus parent httpd sera ajouté pour rendre le nom de fichier unique, évitant les conflits lorsque plusieurs instances httpd partagent un répertoire de fichiers de verrouillage.
Par exemple, si le nom du mutex est mpm-accept et que le répertoire du fichier de verrouillage est /var/httpd/locks
, le nom du fichier de verrouillage pour l'instance httpd avec l'ID de processus parent 12345 serait /var/httpd/locks/mpm-accept.12345
.
La source:
http://httpd.Apache.org/docs/2.4/mod/core.html#mutex
https://docs.trafficserver.Apache.org/en/4.2.x/sdk/mutex-guide.fr.html
J'ai trouvé la solution, la résolution:
Connectez-vous au serveur à l'aide de SSH
. Éditer /etc/Apache2/Apache2.conf
paramètre de fichier:
Mutex posixsem
au lieu de Mutex file:${Apache_LOCK_DIR} default
Redémarrez le service Apache:
service Apache2 restart