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

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

ortolojf
WRInaute accro
WRInaute accro
 
Messages: 2653
Enregistré le: 14 Aoû 2002

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

Message le Lun Avr 24, 2017 20:00

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: Tout sélectionner

# /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.

ortolojf
WRInaute accro
WRInaute accro
 
Messages: 2653
Enregistré le: 14 Aoû 2002

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

Message le Mer Avr 26, 2017 6:43

Bonjour

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

Code: Tout sélectionner
; /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.

ortolojf
WRInaute accro
WRInaute accro
 
Messages: 2653
Enregistré le: 14 Aoû 2002

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

Message le Mer Avr 26, 2017 20:02

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.

ortolojf
WRInaute accro
WRInaute accro
 
Messages: 2653
Enregistré le: 14 Aoû 2002

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

Message le Ven Avr 28, 2017 14:58

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: Tout sélectionner

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.

ortolojf
WRInaute accro
WRInaute accro
 
Messages: 2653
Enregistré le: 14 Aoû 2002

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

Message le Ven Avr 28, 2017 19:02

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: Tout sélectionner

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.


Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par les experts Google Analytics de Ranking Metrics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :