Introduction

PHP est supporté sur App Service. Bien avant l’avènement des App Services sous Linux, il était possible de faire tourner un Wordpress sur un App Service Windows.

App Service sur Linux permet de faire tourner son application parmi les piles d’application supportées ou faire tourner son propre container.

Pour mes tests, j’ai utilisé phpOIDC comme base de référence et Locust comme injecteur.

Le scénario de test comprend :

  • L’interrogation de l’URL de métadonnées

  • L’interrogation de l’URL de webfinger

  • L’authentification et la récupération d’un token

  • La récupération des informations de l’utilisateur (userinfo)

  • La validation du jeton

Windows

Les graphiques suivants présentent les résultats pour un App Service plan B1 sous Windows.

Nombre d’utilisateurs
temps de réponse
Nombre de requêtes par seconde

Le nombre de requêtes est relativement erratique — entre 2 et 6 requêtes/s — avec une moyenne d’environ 3 requêtes/s.

Linux

Plan B1

Les graphiques suivants présentent les résultats pour un App Service plan B1 sous Linux.

Nombre d’utilisateurs
temps de réponse
Nombre de requêtes par seconde

Le nombre de requêtes est relativement plus stable que pour Windows avec une moyenne d’environ 3 requêtes/s.

Plan B3.

Au moment de la rédaction de cet article, les plans Linux sont beaucoup moins cher que Windows. Ainsi en décembre 2020 pour France Central :

OS Taille Cores Mémoire Prix

Windows

B1

1

1,75 GB

~€57.868/mois

Linux

B1

1

1,75 GB

~€11.081/mois

Linux

B3

4

7 GB

~€43.093/mois

On voit ainsi que l’on peut avoir beaucoup plus de ressources avec un plan Linux B3 qu’un plan Windows B1.

Comparons ce qui est comparable et voyons les résultats pour un plan Linux B3 :

Nombre d’utilisateurs
temps de réponse
Nombre de requêtes par seconde

Cette fois-ci, avec un peu de stress, on arrive à 12 requêtes par secondes.

OPcache à la rescousse

OPcache améliore les performances de PHP en stockant le bytecode des scripts précompilés en mémoire partagée, faisant ainsi qu’il n’est plus nécessaire à PHP de charger et d’analyser les scripts à chaque demande. Il est inclus par défaut depuis PHP 5.5.

Les graphiques suivants présentent les résultats pour un App Service plan B1 sous Linux avec OPcache activé dans l’image Docker :

Nombre d’utilisateurs
temps de réponse
Nombre de requêtes par seconde

Le nombre de requêtes est relativement erratique — entre 6 et 10 requêtes/s — avec une moyenne d’environ 8 requêtes/s.

Conclusion

Les tests de performance de phpOIDC n’ont pas du tout été impressionnant (sic.).

Je n’ai pas joué avec le cache local sur App Service sur Windows. C’est une option intéressante en termes de performance.

Cela étant, on a pu voir qu’à prix équivalent, il est préférable d’utiliser un plan Linux. L’utilisation d’OPcache permet également de grandement améliorer les performances. Seule une image personnalisée permet d’avoir OPcache activé, donc un plan Linux.

Il n’existe pas de réponse absolue quand on parle de tests de performance : Cela dépend fortement de l’application, des accès en lecture/écriture, etc. On peut voir que l’utilisation de plan sur Linux permet d’être plus efficace et devrait être favorisé.