GNU/Linux >> Tutoriels Linux >  >> Linux

Comment enquêter sur une fuite mémoire avec Apache et PHP ?

Solution 1 :

Nous savons que le problème de mémoire vient d'Apache/PHP car chaque fois que nous émettons un rechargement /etc/init.d/httpd, l'utilisation de la mémoire diminue

Non, cela signifie simplement qu'il est lié au trafic Web. Vous avez poursuivi en mentionnant que vous exécutez mysql sur la boîte - probablement la gestion des données pour le serveur Web - cela pourrait tout aussi bien être le coupable ici. De même que d'autres services que votre pile Web utilise et que vous n'avez pas mentionnés.

Chaque thread apache se voit attribuer une limite de mémoire PHP de 512 Mo, ce qui explique

Non, ce n'est pas le cas. Vous signalez une moyenne de 7 serveurs et un maximum de 25 serveurs occupés. Pourtant, votre graphique de mémoire affiche un delta d'environ 25 Go.

Vous devriez vraiment recommencer avec le réglage HTTP de base - vous semblez exécuter un nombre constant de 256 httpds, mais votre utilisation maximale est de 25 - c'est tout simplement stupide.

et un max_execution_time de 120 sec qui devrait terminer les threads dont l'exécution prend plus de temps

Non - seulement si le thread d'exécution est dans l'interpréteur PHP - pas si PHP est bloqué.

qui effectue la modélisation financière

(soupir)

Cela aurait été utile si vous aviez fourni des détails sur la façon dont vous avez configuré Apache, threadé ou prefork, quelle version, comment PHP est invoqué (module, cgi, fastcgi), si vous utilisez des connexions persistantes, si vous utilisez des procédures stockées.

Je vous suggère de commencer par déplacer mysql sur une machine séparée et d'arrêter d'utiliser des connexions persistantes (si vous les utilisez actuellement). Définissez la limite de mémoire beaucoup inférieur et remplacez-le sur une base par script. Assurez-vous que le ramasse-miettes de référence circulaire est installé et configuré.

Solution 2 :

Vous avez probablement résolu votre problème maintenant. En guise d'intérim, pour empêcher le serveur de s'échanger / de s'écraser, j'exécute la commande suivante toutes les heures à partir de cron :

#!/bin/sh 
sync; echo 3 > /proc/sys/vm/drop_caches

Je ne dis pas que c'est une solution, juste un moyen de faire fonctionner les choses et de minimiser les temps d'arrêt lorsque vous recherchez la cause réelle de la fuite de mémoire.

Plus de détails ici.

http://www.tecmint.com/clear-ram-memory-cache-buffer-and-swap-space-on-linux/


Linux
  1. Comment activer et désactiver le module PHP curl avec Apache sur Ubuntu Linux

  2. Comment trouver les fichiers de configuration MySQL, PHP et Apache

  3. Comment mettre à jour Apache et PHP avec EasyApache dans un serveur cPanel

  4. Installer Apache et PHP sur CentOS 7

  5. Comment installer PHP-FPM avec Apache sur Ubuntu 20.04

Comment installer Apache avec PHP-FPM sur Debian 10

Comment installer Apache et PHP sur OpenSUSE 15.1

Comment installer LAMP sur Ubuntu 15.10 (Linux, Apache, MySQL et PHP)

Comment installer OpenLiteSpeed ​​Web Server avec MariaDB et PHP

Comment installer et configurer Apache et PHP sur Jelastic Cloud

Comment installer et configurer Memcached avec Apache et PHP