Vous êtes ici:

Menu

PHP-FPM

Adaptez php-fpm à votre configuration

php-fpm-logo
Centreon 18.10 utilise PHP-FPM qui permet une communication entre le serveur Web et PHP, basé sur le protocole FastCGI. Ce mécanisme créé par Andrei Nigmatulin (source wikipédia) permet d'être plus robuste sur des sites subissant de fortes charges.
Lors de l'installation de Centreon avec les sources avec Debian, la configuration de php-fpm se fait avec les paramètres par défaut. Malheureusement, cette configuration s'avère vite insuffisante pour une utilisation intensive de Centreon.
Le fichier de log /var/log/php7.1-fpm.log nous indique assez rapidement, ce genre de message
[07-Nov-2018 14:56:02] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it

Ce message indique que vous n'avez pas assez de processus pour php-fpm. Nous devrons donc augmenter cette valeur dans des proportions cohérentes par rapport à votre configuration.
Dans un premier temps, déterminez la mémoire vive utilisée par les différents processus (centengine, mysql, apache, etc) de votre serveur et estimez la valeur totale que vous pouvez allouer à php-rpm. Dans notre cas, nous prendrons comme valeur 1024 Mo de RAM.
Ensuite, déterminons la consommation par processus php-rpm avec cette commande (attention valable pour une distribution Debian pour le nom du processus) :
ps -ylC php-fpm7.1 --sort:rss
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
S 33 15825 15807 0 80 0 29556 109221 - ? 00:00:00 php-fpm7.1
S 33 15826 15807 0 80 0 30756 109281 - ? 00:00:00 php-fpm7.1
S 0 15807 1 0 80 0 47032 107672 - ? 00:00:00 php-fpm7.1

Les valeurs qui nous intéresse sont celles-qui correspondent à la colonne RSS. C'est la consommation en Ko de chaque processus. Pour obtenir la moyenne, vous pouvez lancer cette commande.
ps --no-headers -o "rss,cmd" -C php-fpm7.1 | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
29M

Nous pouvons calculer le nombre de processus maximum que vous pourrez allouer à votre service php-fpm :

Mémoire allouée en ko / moyenne en ko d'un processus php-fpm

soit

1024/29=35,31 soit 35 processus maximum

Nous éditons le fichier de configuration php-fpm

vi /etc/php/7.1/fpm/pool.d/www.conf

La configuration par défaut est la suivante
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

Nous allons configurer les différentes valeurs :
pm.max_children : la valeur maximum sera celle trouvée précédemment soit 35
Pour les autres valeurs, il n'y a pas de règle bien définie, je n'en ai pas trouvé. Nous dirons que pm.max_spare_servers ne peut être inférieur à pm.start_servers et ni supérieur à pm.max_children. Voici donc une proposition :
pm.max_children = 35
pm.start_servers = 10
pm.min_spare_servers = 10
pm.max_spare_servers = 20

Pour optimiser la durée des processus et les fuites de mémoires, on peut configurer les valeurs suivantes :
pm.process_idle_timeout = 10s;
pm.max_requests = 500

Et je n'ai pas parlé du CPU qui a une importance évidente pour le traitement des processus…



Comments
 Vous êtes ici: