Dégradation de la performance pour Django avec des hommes armés déployés dans Heroku
Question
Je joue avec Heroku pour tester la qualité des applications Django.
J'ai créé un projet simple avec deux actions:
- Retour Simple Hello World
- génère une image et envoyez-la comme réponse
J'ai utilisé siege -c10 -t30s
pour tester à la fois Django Dev Server et GunCorn (à la fois en cours d'exécution sur Heroku).Ce sont mes résultats:
- Django dev
Lifting the server siege... done.
Transactions: 376 hits
Availability: 100.00 %
Elapsed time: 29.75 secs
Data transferred: 0.00 MB
Response time: 0.29 secs
Transaction rate: 12.64 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 3.65
Successful transactions: 376
Failed transactions: 0
Longest transaction: 0.50
Shortest transaction: 0.26
- Gunicorn
Lifting the server siege... done.
Transactions: 357 hits
Availability: 100.00 %
Elapsed time: 29.27 secs
Data transferred: 0.00 MB
Response time: 0.27 secs
Transaction rate: 12.20 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 3.34
Successful transactions: 357
Failed transactions: 0
Longest transaction: 0.34
Shortest transaction: 0.26
Images génératrices
- Django dev
Lifting the server siege... done.
Transactions: 144 hits
Availability: 100.00 %
Elapsed time: 29.91 secs
Data transferred: 0.15 MB
Response time: 1.52 secs
Transaction rate: 4.81 trans/sec
Throughput: 0.01 MB/sec
Concurrency: 7.32
Successful transactions: 144
Failed transactions: 0
Longest transaction: 4.14
Shortest transaction: 1.13
- Gunicorn
Lifting the server siege... done.
Transactions: 31 hits
Availability: 100.00 %
Elapsed time: 29.42 secs
Data transferred: 0.05 MB
Response time: 7.39 secs
Transaction rate: 1.05 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 7.78
Successful transactions: 31
Failed transactions: 0
Longest transaction: 9.13
Shortest transaction: 1.19
j'ai utilisé
- Django 1.4
- Gunicorn 0.14.6
- VENV
Pourquoi les hommes armés sont-ils si lents?
// mise à jour
Les deux tests fonctionnaient dans le respiration de Heroku
Dev Server signifie Standard Django Server - Il peut être exécuté par gen 11a href="htttps://devcenter.heroku.com/articles/django#UPU_A_DIFFERENT_WSGI_SERVERT "REM="nofollow"> ici .
La solution
sont les mêmes paramètres?Django 1.4 Dev Server est multithreadé par défaut et il n'y a que 1 travailleur de synchronisation dans GunCorn Par défaut Config.
Autres conseils
Vous allez avoir à configurer Profilage d'application pour obtenir un aperçu deOù est exactement le problème.
Peut-être que la vitesse de votre connexion Internet est un goulot d'étranglement?Le téléchargement des données de Heroku est évidemment plus lent que le déplacement de Localhost (je suppose que Django dev Server est exécuté à Localhost).Cela peut expliquer pourquoi les points de repère avec de petites réponses (hellowords) sont aussi rapides et les points de repère avec de grandes réponses (images) sont lents pour Heroku.