Temps de réponse étrangement distribués d’un WordPress

Le problème exposé dans ce sujet a été résolu.

Bonjour,

Je m’amuse depuis quelques mois à maintenir une petite instance de WordPress. Il n’y a quasiment aucune visite dessus, ça tourne pas mal, c’est sur un tout petit VPS, tout va bien. PHP 7, opcache, nginx, MySQL, tout ce qu’il y a de plus classique quoi.

On va dire que ce WordPress est disponible à l’URL https://example.com.

Sur un autre serveur, j’ai un daemon collectd qui envoie des requêtes HTTP GET vers https://example.com (juste la page d’accueil) en mesurant le temps de réponse. Après, ça passe à la moulinette dans InfluxDB et compagnie et je fais un beau graphique des temps de réponse en fonction du temps :

Ribambelle de petits points vert sur un fond gris foncé

Et là, ce qui me surprend, c’est que ça fait deux lignes horizontalles distinctes ! La majeure partie des requêtes prenent environ 130ms, mais quelques unes prennent dans les 270ms, et il n’y a rien entre ces deux lignes.

Je n’y connais pas grand-chose en sysadmin, mais selon vous, c’est normal ou pas ? Vous avez une idée d’un problème en praticulier pouvant causer cela ?

(PS : En écrivant ça, je viens de penser au fait que j’ai pas mal de trucs qui tournent sur le serveur qui envoit les requêtes. Il faut que je regarde si ça ne bouche pas au niveau du réseau.)

+0 -0

Hello,

Je lis peut-être mal le graphe, mais j’ai l’impression que les mesures qui ont donné un temps de réponse au-dessus de 200 ms ont lieu à intervalle très régulières (à vue de nez, je dirais 14h38, puis 14h39, puis 14h45, puis 14h38, puis 14h39, etc.). Possible que les mesures basses correspondent à du contenu mis en cache, et que les autres soient liés au fait que ledit cache ait été mis à jour ?

+1 -0

Je pense aussi que c’est une question de cache, en revanche pas facile de savoir lequel.

Un wordpress qui répond en 300ms, c’est déjà surprenant en soit. Tu as quelque chose devant ? Genre un varnish, ou cloudflare, ou t’as flanqué du caching dans nginx ?

Si rien de tout ça, je vois mal un plugin de cache de ton wordpress avoir cet effet alors je dirais le query cache de MySQL ?

+2 -0

Merci :)

Un wordpress qui répond en 300ms, c’est déjà surprenant en soit. Tu as quelque chose devant ? Genre un varnish, ou cloudflare, ou t’as flanqué du caching dans nginx ?

Je n’ai pas de CloudFlare ni de varnish mais j’ai du nginx. Il faut que j’y jette un coup d’oeuil quand-même. Oh, et je vais essayer de désactiver le cache de WordPress pour voir ce que ça donne.

Mais il faudrait surtout que je regarde ce qu’il se passe du côté du serveur qui reçoit les logs. J’ai des doutes quand-même.

Édité : En fait tu as raison. 300ms c’est vraiment, vraiment long. Mais il n’y a absolument pas ce délai quand on navigue dessus avec un navigateur, le serveur répond vraiment vite (genre en environ 100ms, ça correspond avec la ligne du bas). Je pense vraiment que ça vient de mon monitoring.

+0 -0

Bon, je viens d’augmenter temporairement la fréquence des cURL (J’étais à une requête par minute, je suis passé à une requête toute les deux secondes), et j’ai eu ça :

La plupart des requêtes prennent bien 100ms ~ 150ms

Je ne pense pas qu’il y ai besoin de chercher plus loin. Je suis certain que le problème vient du serveur qui envoie les requêtes. Merci encore !

+0 -0

Bon, j’ai des nouvelles. En fait c’était pas du tout un problème du serveur qui envoie les requêtes contrairement à ce que j’ai dit dans mon message précédent (merci victor !). Je viens de me rendre compte à l’instant en lisant attentivement les logs de nginx que chaque requête un peu longue de collecd était immédiatement suivie d’un POST vers /wp-cron.php, avec comme referrer "WordPress/4.9.1; https://nom-de-mon-site.fr". Haha, tout s’explique :) On a donc notre WordPress qui se cURL lui-même périodiquement pour pouvoir lancer ses batchs dans des processus à part. Et forcément, les choses lancées par ce pseudo-cron doivent demander un peu de ressources et doivent pas mal ralentir la requête de collectd.

Du coup, tout est normal. Mais ça serait plus propre que je désactive ça et que je fasse quelque chose de bien avec /etc/crontab. Et il faudrait peut-être que je vérifie si il n’y a pas un truc à faire pour que ce cron prenne moins de ressources.

Merci !

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte