Lenteur de WordPress sur Azure App Service sous Linux
J’ai rencontré un cas intéressant ces derniers temps à propos de l’hébergement dans Azure d’un site web basé sur WordPress.
WordPress est une plateforme intéressante et très utilisée (mais aussi très ciblée par les attaques et donc il faut maintenir son instance à jour) fonctionnant sous PHP et MySQL. De nombreux plug-in sont disponibles pour personnaliser le Système de Gestion de Contenu (CMS – Content Management System).
Le cas particulier rencontré récemment m’a permis d’apprendre un point que je qualifie d’important par rapport à Azure App Service, lorsque l’OS choisi est Linux. En effet, le site avait un temps de chargement très lent, au niveau du TTBF (Time-To-First-Byte) – lire https://en.wikipedia.org/wiki/Time_to_first_byte pour plus d’informations sur la signification.
L’analyse a montré que le site se chargeait plus vite lorsque 2 plug-in étaient désactivés (WPML et Metabox), sans pour autant fournir un temps de chargement exceptionnel. Il existe d’ailleurs plein de recommandations sur Internet concernant l’hébergement de WordPress sur Azure mais rien n’a amélioré la situation.
Au final, grâce à une discussion avec un membre de l’équipe produit Azure App Service lors de l’événement Microsoft Ignite 2019, il m’a été conseillé de tester la réaction du site avec Azure App Service sous Windows. L’amélioration de performances fut radicale, avec le type d’instance Azure App Service, la même base de données et la même localisation des ressources.
L’explication est le plus intéressant : il semblerait que les plug-in WPML et Metabox fassent beaucoup d’accès disques lors du chargement des pages sur WordPress. Dans Azure App Service, les fichiers déposés par FTP ou autre moyen sur le site sont en réalité exposés sur un partage de fichiers qui est accédé par l’instance Azure App Service et cela peut introduire des latences.
Le service Azure App Service sous Windows dispose d’un mécanisme de cache qui limite les accès au partage de fichiers (et donc limite les latences) tandis que Azure App Service sous Linux n’a pas ce mécanisme de cache (en tout cas à l’heure actuelle). En cas d’accès intensifs aux fichiers du site hébergé, la cumulation de petites latences peut donc augmenter le temps d’affichage du site, en fonction de la manière dont il est développé bien sûr. Une autre solution pour héberger ce site dans Azure App Service sous Linux aurait été de créer un conteneur avec le contenu du site car le conteneur s’exécute localement et n’est donc pas sujet aux latences décrites précédemment.
Cela ne veut pas dire que tous les sites dans Azure App Service sous Linux sont concernés, car la manière dont le site est développé et dont il renvoie les données au navigateur peut tout changer. C’est d’ailleurs le seul cas d’hébergement de WordPress dans Azure App Service sous Linux qui était lent, ce qui montre bien que cette observation ne peut pas être généralisée. Cela dit, dans certains cas, il peut être utile de comparer les performances en testant avec Windows et Linux.
— Stefan