Qelle confjg PHP7.1-FPM pour site moyenne charge ?

WRInaute accro
Bonjour

Mon site ( voir profil ), est le seul site sur mon VPS 2016 SSD de OVH, avec CPU 2vCore, 8 Go RAM et 40 Go SSD.

Il a 3.600 visites/jour et 1.350 vu/jour.

J'ai Opcache semble-t-il bien configuré ( merci à Spout ;) ).

Mon site déclenche également des scripts PHP en mode CLI,

En effet, mon site forke un process PHP CLI ( très court ) à chaque chargement de page, ( antiaspirateur ).


J'ai testé les configs suivantes ( approximatives ) de PHP7.1-FPM :

1- en mode dynamic, start_servers=5, des spare_servers moyennement élevés, max-requests=500, et process_idle_timeout=0; ( valeur par défaut ) :

Au bout de quelques heures, les process php-fpm sont à 99% du cpu, le site est down.

A peu près 4 ou 5 processus à 99%.

2- en mode static, start_servers=50, max_requests=500, même chose ( les php-fpm à 99% cpu et site down ) :

4 ou 5 processus PHP-FPM à 99%.


J'essaye à l'instant cette config :

Code:
# /etc/php/7.1/fp:pool.d/www.conf
 
listen = /var/run/php/php7.1-fpm.sock

pm = dynamic

pm.max_children = 50

pm.start_servers = 15

pm.min_spare_servers = 5

pm.max_spare_servers = 25

pm.process_idle_timeout = 20s;

;pm.max_requests = 500

request_terminate_timeout = 30

;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
;php_admin_value[error_log] = /var/log/fpm-php.www.log
;php_admin_flag[log_errors] = on
;php_admin_value[memory_limit] = 32M
php_admin_value[memory_limit] = 256M
php_admin_value[session.save_path] = /tmp/

Cette fois-ci : max_request=0 ( défaut ), et request_terminate_timeout = 30

Les deux dernières lignes sont rajoutées, tirées d'un site dont je ne me souviens plus.

Le total %CPU des process PHP7.1-FPM oscille entre 7% et 28% à peu près.

Celà n'a pas changé depuis les autres configs.

Mais, le basculement vers 99% se faisait de manière blocante.

Pensez-vous que cette fois-ci le site va tenir ?

Quelle serait la meilleure configuration pour ce VPS ?

J'ai mis le lien entre Nginx et PHP7.1-FPM par un socket Unix plutôt qu'en TCP-IP, ( port 9000 ), ce je faisais avant ces manips, simplement car j'ai lu sur le net que celà surchargeait la pile réseau.

Merci beaucoup de vos réponses.

Amicalement.
 
WRInaute accro
Bonjour

Avec cette config depuis hier après-midi, le serveur web semble ne pas crasher ni se bloquer.

Code:
; /etc/php/7.1/fpm/pools.d/www.conf

pm = ondemand

pm.max_children = 45
pm.start_servers = 15
pm.min_spare_servers = 5
pm.max_spare_servers = 25

pm.process_idle_timeout = 10s
pm.max_requests = 300
pm.status_path = /status



J'ai le cache Zend Opcache réglages par défaut, sans cache fichier, mais avec :

opcache.file_cache_consistency_checks=1

Celà peut-il avoir un impact par rapport aux blocages ?

Je penche pour un effet de deadlock entre tables MySQL de l'antiaspirateur.

Je vais vérifier qu'elles sont en mode Innodb ( pas MyISAM ).

Merci de vos réponses.

Respectueusement.
 
WRInaute accro
Bonjour

L'augmentation à 100% du cpu se produit à 13h30 tous les jours, c'est-à-dire au moment du basculement des courses du lendemain vers les couses du jour.

Ce basculement est déclenché par la première visite d'un visiteur,et occasionne des lectures/écritures sur des tables MySQL en mode MyISAM, mais également la pose de verrous en écriture sur accès concurrent, probablement la cause des deadlocks.

Avant, le nombre de visiteurs simultanés était compatible avec ces verrous, mais mon trafic me donne sur Google Analytics, jusqu'à 45/50 visiteurs en temps réel.

Je ne sais pas quel délai correspond à ces 45/50 visiteurs.

Seule solution : Déclencher ce basculement par le crontab.

En attendant, j'y ai mis un script Shell qui redémarre PHP7.1-FMP et Nginx automatiquement à 13h45.

Amicalement.
 
WRInaute accro
Bonjour

Le problème venait d'un blocage de deux scripts php, à cause de la migration à PHP 7.1.

Maintenant ouf c'est réparé, mais avec ces ressources et charges, que me conseilleriez-vous comme config php-fpm dans /etc/php/7.1/fpm/pool.d/www.conf ?

Ressources : VPS SDD 40 Go SSD, Debian 8 Jessie, 8Go RAM, PHP 7.1 et ZendOpcache.

Charges : MySQL dépasse rarement 7% cpu, chaque process php-fpm fait dans les 5% à 15% 20% grand maximum ( peu souvent > 12-13% ).

J'ai : 2300+ visites/jour, 1400 vu/jour, 9 minutes/visite.

Depuis la réparation complète à midi, le cpu traîne en dessous de 15%, quasiment tout le temps en dessous de 10%.

Je suis revenu à du dynamic,

Voici la config actuelle :

Code:
pm = dynamic

pm.max_children = 15

pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 12

pm.process_idle_timeout = 10s

pm.max_requests = 300

pm.status_path = /status

Le max_children est-il trop haut ?

Le max_requests peut-il être adapté ?

J'ai peur de tout casser, et que OVH me saque pour dépassement cpu.

Bien amicalement.
 
WRInaute accro
Rebonjour

D'après OVH, depuis midi ( heure de la réparation des scripts ), le CPU est < 10% et la RAM < 35%.

La RAM a toujours été comme çà.

Le trafic est normal.

A votre avis, que puis-je améliorer de cette config ?


Code:
pm = dynamic

pm.max_children = 15

pm.start_servers = 8
pm.min_spare_servers = 4
pm.max_spare_servers = 12

pm.process_idle_timeout = 10s

pm.max_requests = 300

pm.status_path = /status

Merci beaucoup de vos réponses.

Respectueusement.
 
Haut