PHP-FPM prendre trop de mémoire
J'utilise Nginx+PHP-FPM avec php 5.3.6 et c'était bien le travail pendant des semaines.
Soudain, chaque PHP-FPM enfant a commencé à prendre trop de mémoire. Dans les premières semaines de chaque PHP-FPM enfant utilisé pour prendre des 3MB maintenant quelques enfants prennent de 700 mo.
Quelqu'un peut sur ce guide?
This script I used to get memory usage by child pid
http://www.pixelbeat.org/scripts/ps_mem.py.
It could be verified by 'top' method too
top output::
------------------------------
------------------------------
28419 daemon 20 0 844m 757m 4200 S 0 6.4 0:14.27 php-fpm
16788 daemon 20 0 700m 614m 4632 S 0 5.2 0:28.34 php-fpm
29450 daemon 20 0 669m 581m 3548 S 0 4.9 0:08.31 php-fpm
17881 daemon 20 0 642m 556m 4108 S 0 4.7 0:14.83 php-fpm
19048 daemon 20 0 642m 555m 4108 S 0 4.7 0:08.86 php-fpm
11956 daemon 20 0 97612 10m 5476 S 4 0.1 0:39.57 php-fpm
11993 daemon 20 0 97560 10m 5188 S 4 0.1 0:39.18 php-fpm
11925 daemon 20 0 97328 10m 5144 D 3 0.1 0:38.68 php-fpm
11953 daemon 20 0 97748 10m 5172 S 4 0.1 0:38.51 php-fpm
php-fpm.conf:
/etc/php-fpm/php-fpm.conf
listen = 127.0.0.1:9000
user = daemon
group = daemon
pm = dynamic
pm.max_children = 2000
pm.start_servers = 50
pm.min_spare_servers = 40
pm.max_spare_servers = 90
pm.max_requests = 10000
Suivants sont les plus debug entrées:
pmap::
pmap 28419
0000000000b52000 96K rw--- [ anon ]
0000000001a49000 1668K rw--- [ anon ]
0000000001bea000 208K rw--- [ anon ]
0000000001c1e000 770476K rw--- [ anon ]
strace::
strace -p 28419
Process 28419 attached - interrupt to quit
restart_syscall(<... resuming interrupted call ...>) = 0
recvfrom(4, 0x1bda1d0, 8196, 64, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout)
recvfrom(4, 0x1bda1d0, 8196, 64, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}], 1, 5000^C <unfinished ...>
peut-être un trop ignorants commentaire - une chance de scripts PHP commencé à manger trop de mémoire - par le chargement d'un trop grand nombre de données, par exemple?
Votre site est-il occupé? Quel est le nombre de requêtes par minute? Cela pourrait certains de fuite de mémoire dans l'une de vos bibliothèques php, ce qui est courant en php. 🙂
Avez-vous vérifié votre slowlog? Il est défini dans votre php-fpm fichier de configuration.
En fonction de votre réglage: pm.min_spare_servers = 40, vous devriez avoir au moins 40 ralenti php processus de sortie supérieur. C'est trop gros! Pourriez-vous dresser la liste de tous les php-fpm info? Par exemple, exécuter la commande 'ps aux |grep php-fpm |grep -v grep'
Votre site est-il occupé? Quel est le nombre de requêtes par minute? Cela pourrait certains de fuite de mémoire dans l'une de vos bibliothèques php, ce qui est courant en php. 🙂
Avez-vous vérifié votre slowlog? Il est défini dans votre php-fpm fichier de configuration.
En fonction de votre réglage: pm.min_spare_servers = 40, vous devriez avoir au moins 40 ralenti php processus de sortie supérieur. C'est trop gros! Pourriez-vous dresser la liste de tous les php-fpm info? Par exemple, exécuter la commande 'ps aux |grep php-fpm |grep -v grep'
OriginalL'auteur amolrajoba | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Essayez de diminuer pm.max_requests à 1000, puis plus bas si nécessaire. Cela permettra de tuer les processus enfants après 1000 demandes. Il y a beaucoup de variables à considérer lors de php-fpm porcs de ressources. Je l'ai utilisé pendant un certain temps et n'ont pas vu un tel niveau de consommation de mémoire. Ma conjecture serait un code, ou une fugue de script.
assurez-vous de lire ceci! linuxbsdos.com/2015/02/17/...
La seule chose qui fonctionne pour moi est opcache php.net/manual/en/book.opcache.php
OriginalL'auteur gmck