Comment activer les champs Apache Core et suivre les erreurs de segmentation Apache sur un serveur Linux – Support de Plesk – Un serveur de qualité
Sommaire
des questions
Les erreurs de segmentation Apache sont dues à une extension ou à une interopérabilité avec un module de système d'exploitation qui provoque un crash. Comment activer les vidages de noyau pour Apache et suivre les erreurs de segmentation Apache sur un serveur Linux?
Apache crush peut afficher les symptômes suivants dans le fichier journal des erreurs Apache global – / Var / log / httpd / error_log (CentOS / RHEL) ou / Var / log / apache2 / error_log (Debian / Ubuntu):
-
Les pages Web renvoient une erreur HTTP 500.
-
Erreur de segmentation "peut se produire:
CONFIG_TEXT: erreur erronée ou erreurs laides découvertes dans le processus global
répondre
Active les champs du noyau Apache
-
Connectez-vous à un serveur Linux via SSH.
-
Recherchez une partition disposant d'un espace suffisant (utilisez & # 39; df -h & # 39;) suffisant pour stocker des vidages de mémoire. Dans cet exemple, nous utilisons le répertoire / var à la racine & # 39; / & # 39; partition.
Remarque: Chez CentOS 7, à cause de
PrivateTmp = trueparamètre dans un périphérique systemd, il n’est pas possible d’utiliser un répertoire dans / tmp / en tant que répertoire pour les vidages principaux. -
Changer le script de démarrage Apache:
-
Pour les systèmes systemd, créez un nouveau fichier de périphérique à l’aide de la commande:
et ajoutez les lignes suivantes:
CONFIG_TEXT: [Service]
LimitCORE = infini -
Pour les systèmes CentOS / RHEL non-systèmeAjouter
DAEMON_COREFILE_LIMIT = illimitéligne à/ Etc / sysconfig / httpdfichier. -
Pour les systèmes non basés sur le système Debian / Ubuntuouvert
/etc/init.d/apache2déposer et trouverdo_start ()section. Ajoutez la ligne suivante à cette section:CONFIG_TEXT: ulimit -c illimité
-
-
Créez un dossier dans lequel les champs principaux seront enregistrés:
# mkdir -p / var / coredumps
# chmod a + w / var / coredumps -
Entrez le chemin et le modèle des fichiers de vidage principaux dans
/ Proc / sys / kernel / core_patternfichier:# echo / var / coredumps / core% e% s% u% g-% p-% t> / proc / sys / kernel / core_pattern
Si pour une raison quelconque
core_patternle fichier ne peut pas être changé, spécifiez unCoreDumpDirectoryemplacement dans/etc/httpd/conf/httpd.conf(CentOS / RHEL) ou/etc/apache2/apache2.conf(Debian / Ubuntu):# grep "CoreDumpDirectory" /etc/httpd/conf/httpd.conf
CoreDumpDirectory / var / coredumps -
Redémarrez le service Apache:
-
sur CentOS / RHELdistributions basées sur
# service httpd restart
-
sur Debian / Ubuntudistributions basées sur
# service apache2 restart
-
-
Pour vous assurer que les vidages mémoire sont configurés, effectuez le test suivant:
7.1. Répertoriez les processus Apache et leurs PID:
-
sur CentOS / RHELdistributions basées sur
# ps auxf | saisir httpd | grip -v grip
mess 15654 1,4 0,7 372448 13840? Ssl 13:25 0:00 / usr / sbin / httpd-FOREGROUND
apache 15680 0,0 0,3 370944 6164? S 13:25 0:00 _ / usr / sbin / httpd-FOREGROUND -
sur Debian / Ubuntudistributions basées sur
# ps auxf | grep apache2 | grip -v grip
mess 2410 0,2 1,5 292588 33036? Ssl 13:32 0:00 / usr / sbin / apache2 -k début
www-data 2413 0,0 0,3 237808 6504? S 13:32 0:00 _ / usr / sbin / apache2 -k start
7.2. Tuez un processus Apache principal avec le signal SIGSEGV:
# kill-SIGSEGV
7.3. Vérifiez le dossier de base. Les fichiers seront nommés comme:
-
sur CentOS / RHELdistributions basées sur
# ls / var / coredumps
httpd noyau 11-0-0-14750-1556864320 -
sur Debian / Ubuntudistributions basées sur
# ls / var / coredumps
core! usr! sbin! Apach-11-0-0-2410-1556865180
Remarque: Si le démon abrtd est en cours d'exécution, il empêche la création de fichiers de vidage du noyau.
-
-
Répétez le problème.
Une fois le suivi terminé, supprimez les modifications apportées au script de démarrage Apache à l'étape 3 et redémarrez Apache.
Analyse les vidages du noyau Apache
-
Installez l'outil gdb:
-
sur CentOS / RHELdistributions basées sur
# Vous installez gdb
# debuginfo-install httpd -
sur Debian / Ubuntudistributions basées sur
# apt-get install gdb
-
-
Remplacez le chemin d'un fichier de vidage du noyau dans la commande ci-dessous et exécutez-le:
-
sur CentOS / RHELdistributions basées sur
# gdb / usr / sbin / httpd / var / coredumps / core-httpd-11-0-0-14750-1556864320
-
sur Debian / Ubuntudistributions basées sur
Si le fichier de vidage principal contient & # 39 ;! & # 39; symboles dans leur nom, définissez un commentaire & # 39; avant chaque & # 39 ;! & # 39; symbole comme ceci:
# gdb / usr / sbin / apache2 / var / coredumps / core – usr sbin Apache 11-0-0-2410-1556865180
-
-
Exécutez la commande bt dans la requête gdb pour obtenir une trace et analyser la sortie:
CONFIG_TEXT: (GDB) bt complet







Commentaires
Laisser un commentaire