J'ai remarqué un comportement étrange sur la configuration que j'ai créée sur AWS (région eu-south-1) pour évaluer la migration depuis notre fournisseur actuel. Je veux déployer 1-n instances EC2 qui servent des requêtes web via Apache, en servant des fichiers stockés sur un volume EFS commun. J'ai déjà implémenté et testé la partie RDS, les performances de PHP, l'intégration d'ElasticCache, etc. Cependant, j'ai remarqué un délai de 5 secondes sur des requêtes sporadiques, un délai qui semblait très déterministe et trop proche de la valeur de 5 secondes. Le volume EFS est en mode burst, les crédits sont élevés (2T) et le pourcentage d'utilisation est vraiment faible, donc cela ne devrait pas être le problème.
J'ai monté le volume EFS avec les options suggérées, à la fois avec le "EFS mount helper" et le "NFS Client", rien n'a changé. J'ai donc essayé de redémarrer à partir de zéro, en installant uniquement le serveur web Apache par défaut (j'ai même essayé avec Nginx avec des résultats similaires) et en montant le volume EFS et l'évaluation comparative à partir d'une autre instance EC2 avec la commande suivante :
siege -c 2 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
Avec Ubuntu 18.04 et Ubuntu 20.04, la transaction la plus longue est toujours supérieure à 5 secondes (5,12 - 5,42 secondes). Avec AmiLinux en revanche, la transaction la plus longue est assez rapide (0,15 seconde). Il est intéressant de noter que si je diminue le nombre de clients parallèles de 2 à 1 :
siege -c 1 -r 20 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
la transaction la plus longue est également correcte sur Ubuntu, même si je laisse "siege" fonctionner pour plus de répétitions :
siege -c 1 -r 10000 -b http://35.152.48.17/efs-mount-point/efs-test/logo.png
Cependant, si nous supprimons la variable EFS sur Ubuntu et que nous servons les fichiers à partir de l'EBS local, la transaction la plus longue est extrêmement rapide (quelques millisecondes), donc le problème ne se pose que sur EFS avec Ubuntu (à la fois 18.04 et 20.04). Peut-être que les options de montage suggérées fonctionnent pour AmiLinux mais qu'il manque quelque chose pour les AMIs Ubuntu ?
Les étapes de la reproduction sont si faciles qu'elles me paraissent étranges :
- choisissez l'AMI Ubuntu 18.04 ;
- monter le volume EFS (soit avec le "EFS mount helper", soit avec le client NFS) ;
- installer Apache en mettant à jour uniquement le répertoire de service.
Une suggestion ?