Existe-t-il un moyen de calculer le nombre de requêtes par seconde qu'un système de une application Django, sans avoir recours à des choses comme faire un test de déploiement et d'utiliser un outil externe tel que locust ?
Non et Oui. Comme l'a souligné mackarone, je ne pense pas qu'il soit possible d'éviter de le mesurer. Considérez le cas où vous avez fait un benchmark local sur votre serveur de développement local communiquant avec une instance de base de données locale, afin de générer une base de référence pour l'estimation. Le problème est que le matériel et le réseau (distance entre les services) font une énorme différence. Par conséquent, les chiffres générés localement n'auraient aucune valeur pour la planification de la capacité.
D'après mon expérience, les tests locaux sont très utiles pour relatif changements. Prenons l'exemple d'un cas où l'on souhaite évaluer l'impact de la planification des requêtes SQL sur les performances. Établir une base de référence locale, effectuer le changement, puis observer l'effet localement. es utile pour évaluer la vitesse relative.
Comment générer ces chiffres ?
Je vous recommande de déployer l'application sur le matériel et le réseau sur lesquels vous prévoyez de faire des tests. Ce déploiement devrait utiliser votre configuration de production et la topologie des composants (par exemple, si vous allez utiliser gunicorn, assurez-vous que gunicorn fonctionne à la place de NGINX, ou si vous allez avoir un proxy en face de gunicorn, assurez-vous qu'il est configuré). Je lancerais une seule instance de votre application en utilisant votre configuration de production.
Une fois ce processus lancé, j'effectuerais un test de charge sur l'instance unique à l'aide de l'un des outils de test de charge les plus répandus :
Vous pouvez lancer ces tests de charge à partir d'une seule machine et augmenter le trafic jusqu'à ce que les temps de réponse ne soient plus acceptables afin d'avoir une idée du nombre de connexions simultanées et du débit que votre application peut supporter.
Vous avez maintenant une idée de ce qu'une instance unique de votre service est capable de gérer. Jusqu'à ce que votre base de données (ou d'autres ressources partagées) soit saturée, ces chiffres peuvent être utilisés pour prévoir combien d'instances de votre service sont nécessaires pour gérer un certain volume de trafic !