L'hébergement mutualisé pour tou·te·s, imaginé par des développeur·euse·s, pour des développeur·euse·s.
Découvrir le Cloud PublicCe message d’erreur renvoyé par le log Apache ($HOME/admin/logs/apache/
) indique que la limite du nombre de processus PHP (20) à un instant T a été atteinte et que les nouvelles connexions sont en attente qu’un processus PHP soit disponible.
Pour faire repartir rapidement le site vous pouvez le redémarrer dans Web > Sites. Cela ne réglera cependant “qu’artificiellement” et temporairement le problème. Vous pouvez analyser les processus ou utiliser des services de profiling PHP tels New Relic, Tideways ou Blackfire pour en trouver la source.
Il peut y avoir de nombreuses raisons : manque d’optimisation, ressource externe injoignable, problème de sessions…
Chaque fois qu’une session PHP est démarrée, un fichier est créé (session.save_path
) reprenant toutes ses informations et lui allouera un ID. Lorsqu’un utilisateur revient il fournira cet ID qui permettra a session_start()
de récupérer ses données de session. Chaque fois que session_start()
est démarré le fichier de session est verrouillé à l’aide de flock
.
Cela peut entraîner des problèmes lorsque deux processus PHP tentent d’accéder simultanément à la même session PHP : le deuxième devra attendre que le premier se termine pour s’exécuter pour éviter des incidents de concurrence. Cela entraîne de ce fait des lenteurs voire des indisponibilités.
L’analyse de vos processus HTTP renvoient :
$ strace -f -p1821543 -p1822026
Process 1821543 attached
Process 1822026 attached
[pid 1821543] flock(8, LOCK_EX <unfinished ...>
[pid 1822026] flock(8, LOCK_EX
Vous retrouverez sur cette documentation plus d’informations et solutions pour corriger ces sessions problématiques. La bonne pratique, permettant de limiter la période durant laquelle la session est bloquée, est d’appeler session_start()
le plus tard possible et session_close()
le plus tôt possible.
Vous atteignez la limite de 256 Mo, valeur par défaut de memory_limit
en PHP. Vous pouvez augmenter cette valeur via les php.ini
dans Environnement > PHP ou au niveau du site lui-même dans Web > Sites > Modifier le [site] - ⚙️.
Pour utiliser en SSH une autre version PHP et/ou une autre configuration PHP que celle renseignée dans Environnement > PHP, il est possible d’utiliser les commandes suivantes :
$ export PHP_VERSION=<version>
$ export PHPRC=/chemin/vers/php.ini
ou encore pour le php.ini
:
$ php -c /chemin/vers/php.ini
Les fichiers php.ini
sont disponibles en lecture seule dans le répertoire $HOME/admin/config/php/
.