Lenteur récurrente de SPIP au démarrage (25 secondes d'attente pour la première page)

Bonjour,

Mon site principal est en SPIP, dans le domaine principal. J’ai aussi un sous-dossier, dans lequel j’ai plusieurs sous-dossiers, dans lesquels j’ai installé plusieurs « petits SPIP » (avec base sqlite), pour des projets collaboratifs. Cela fonctionne très bien, depuis plusieurs années. Le seul problème que j’ai, comme ce sont des « mini-sites » fréquentés uniquement par leurs utilisateurs (et pas indexés par les moteurs de recherche), c’est quand on y revient (et qu’il n’y a donc pas eu de visites depuis un certain temps), la première page met 25 secondes avant de s’afficher. Et ensuite, tout fonctionne parfaitement normalement.

J’ai essayé d’augmenter la durée du cache dans mes_options.php comme ceci :

# On fait passer la durée du cache par défaut à un mois (alors que par défaut c'est une journée)
define('_DUREE_CACHE_DEFAUT', 24*3600*30);

Mais ça ne change rien : si on revient 2 jours après, la première page met quand même 25 secondes à être servie.

J’ai installé les plugins Memoization et cacheLab (avec APCu). C’est bien pour les performances, mais ça ne change pas les 25 secondes pour l’affichage de la première page.

J’ai l’impression (mais ce n’est qu’une supposition) que le cache est entièrement reconstitué, et que c’est cela qui prend du temps.

Je n’ai pas le problème sur le site SPIP dans le domaine principal, mais uniquement avec ceux qui sont dans des sous-dossiers. Et j’ai l’impression que ça ne le faisait pas quand c’était SPIP 3.

J’espère que certain.e.s ont peut-être des clés pour ce mystère !

Benoît

Amha, ça vient du fait que le site déclenche les tâches « cron » lors de la première visite (et une des tâches doit prendre beaucoup de temps). En effet, les tâches cron (cf onglet Maintenance / Tâches de fond ou Liste des travaux) sont déclenchées par les visite du site public cf Fonctionnement du cron - Programmer avec SPIP 4.0

Tu peux forcer ces tâches à l’aide d’un cron serveur qui appelle l’url http://mondomaine.tld/spip.php?action=cron.

Oooohh !!! Je comprends tout, mille mercis !

Du coup, que me conseillerais-tu en termes de périodicité ? Une fois par jour ?

Et en effet, je vois que je peux définir autant de tâches cron que je souhaite au niveau de mon hébergeur (O2switch). Il faut juste que je vois comment juste appeler une url (car à la base, c’est le lancement d’un script).

Merci !!!

Par ailleurs, je me demande pourquoi l’opération cron est si lente, alors qu’il n’y a pas de choses immenses dans ces mini-sites. Peut-être aussi une piste à explorer, qu’en penses-tu ?

Toutes les heures.

Je ne peux pas débuguer à ta place :slight_smile: Mais, tu peux lancer les tâches manuellement depuis le privé, et donc voir laquelle prend du temps pour commencer à cerner le problème.

Merci beaucoup pour ton conseil pour toutes les heures. Et, oui, je vais explorer, essayer de comprendre, et je relaterai mes investigations ici. Il y a un « truc » à trouver, car ça le fait sur tous les SPIP que j’ai installés, avec la même durée de 25 secondes.

Je viens de retourner sur un sous-site : 25 secondes pour l’affichage de la première page, puis je suis allé dans le back-office exécuter manuellement toutes les tâches cron, et elles ont toutes été très rapides. Donc, c’est encore mystérieux.

25 secondes, ça sent le timeout sur une ressource extérieure (considérée comme extérieure par le script PHP).
Tu as accès aux logs d’erreur PHP/apache ?

Ta suggestion est très intéressante. Voici ce que j’ai trouvé dans le fichier error_log de l’un de mes sous-sites :

[10-Nov-2022 07:36:10 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 07:36:10 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:36:10 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:36:11 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 07:36:11 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:36:11 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 20:35:05 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 20:35:05 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 20:35:05 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_ccas_faire_monde/plugins-dist/svp/inc/svp_outiller.php on line 281

Et dans un autre :

[10-Nov-2022 07:39:28 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 07:39:28 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:39:28 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:39:28 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 07:39:28 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 07:39:28 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 20:15:48 UTC] PHP Warning:  Undefined array key 1 in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 271
[10-Nov-2022 20:15:48 UTC] PHP Warning:  Undefined array key "4." in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281
[10-Nov-2022 20:15:48 UTC] PHP Warning:  Trying to access array offset on value of type null in /home8/quidampr/public_html/_docs/projets/2022/2022_nantes_droits_culturels/plugins-dist/svp/inc/svp_outiller.php on line 281

Est-ce que ça te parle ? Qu’en penses-tu ?

Ça, ce sont juste des warnings PHP sans incidence sur le temps d’exécution.

C’est un timeout qu’il faudrait trouver

D’accord. Je ne trouve pas de timeout dans le fichier error_log (c’est le fichier généré par SPIP). Je suis allé dans le cPanel d’O2Switch, là il y a le journal d’accès brut (pas de timeout), et le journal d’erreurs (très peu nombreuses, pas de timeout non plus).

J"ai eu longtemps ce même problème avec cet hébergeur mais je m’en foutais un peu s’agissant de sites de démo et d’une latence limitée à la 1ere page. Il faut également savoir que c’est du mutualisé.
Il est possible que tu sois sur une machine un peu chargée, du coup les cron sont peut être de la partie.

Cela a disparu d’un coup sans que je me souvienne quand. (Je consulte ces sites abandonnés environ 3-4 fois par an pour vérifier qu’ils n’ont pas été défacés.)
Cela reviendra peut être un jour mais vu le prix et le service je compte pas passer à la concurrence…

Au fait, cela te consolera surement pas mais je suis en SPIP3.

Merci pour ton retour. Oui, j’ai l’impression que la machine est chargée, car j’ai d’autres sites chez eux, qui me semblent marcher mieux. Je leur ai demandé de changer de machine, ils m’ont dit qu’elles étaient toutes pareilles… ce que je ne crois pas.

Mmmm… ça a dû disparaître pour toi car ils ont fait une mise à jour de ta machine ou une migration sur une autre, à mon avis.

En effet, à part cela, leur rapport qualité-prix est vraiment super, et le support est réactif, aidant et sympathique (même s’ils ne veulent pas me changer de machine !).

Depuis hier du coup j’ai mis en place un cron une fois par heure sur tous mes « sous-sites », et pour le moment, ça a l’air d’avoir fluidifié les choses.

Mais bon… mystère tout de même, et c’est intéressant que tu aies eu le même souci chez eux. Peut-être trouverais-je !!

Le problème est revenu (malgré le cron toutes les heures) : dans l’un des sous-sites, quelques pages marchaient bien (elles devaient être en cache), et puis à l’appel d’une des pages, ça y est, il lui a fallu 25 secondes pour être calculée.

J’ai regardé dans les statistiques dans le cPanel, et je vois pas de surconsommation sur le processeur ou sur la mémoire. Il faut que je continue à chercher…

Bonjour,

Tu as des urls pour que l’on regarde ?

Merci

Ce serait effectivement une bonne idée

parallèlement
Créer un site de test strictement distrib avec 2-3 articles et des docs joints (je crois que tu en a des gros)
L’abandonner quelque temps et y revenir
Si ça mouline → plutôt serveur : apache, bdd, php, httaccess, machines avec un doute sur le cron (cf b_b)
Si c’est ok → plutôt spip paramètres, squelettes, plugins, cron…
A++

Oui, chouette, merci à toi.
Celui dont je parlais hier :
https://www.benoitlabourdette.com/_docs/projets/2022/2022_institut_pour_la_photographie/plateforme_formation/

Et puis deux autres :
https://www.benoitlabourdette.com/_docs/projets/2022/2022_perifeeries_college_medias/

https://www.benoitlabourdette.com/_docs/projets/2022/2022_nantes_droits_culturels/informations/les-situations-professionnelles

Là, je pense grâce au cron une fois par heure, ils semblent marcher nickel. Sauf pour le premier hier, sur l’une des pages.

Oui, c’est une excellente idée, je vais faire cela, pour en effet préciser la cause.

Sur quelle page ça serait lent ?

Bonjour, en ce qui me concerne, pas de problème de vitesse d’affichage sur aucun des trois sites indiqués, et sur le premier, j’ai même des résultats très bons sur PageSpeed Insights

Bonne journée !

Éric LM

Avant que je mette en place la cron une fois par heure, c’était la première page (page d’accueil ou n’importe laquelle) qu’on demandait d’afficher qui mettait 25 secondes à apparaître. Et là, hier, ce fut cette page là (les 3 ou 4 premières avaient été servies tout de suite) : L'Institut pour la photographie, un projet au service de la photographie - ÉVEILLER LE REGARD - La photographie, médium pour les enseignements et les apprentissages
Mais là, elle marche nickel.

C’est vraiment comme le « rédémarrage » de quelque chose.