Réduire le temps processeur de l’utilisateur sur Django

Je travaille actuellement sur un site Web Django, en travaillant avec la barre d’outils de django debug, sur un petit dropplet numérique océanique. Tout fonctionne avec Postgresql, Django, Gunicorn et Nginx.

Ce qui me dérange, c’est que le temps de rendu est d’environ 2,5 secondes, et que la majeure partie concerne le temps CPU de l’ utilisateur .

Resource Value User CPU time 2271.395 msec System CPU time 86.142 msec Total CPU time 2357.537 msec Elapsed time 2483.655 msec Context switches 8 voluntary, 469 involuntary Browser Chronology domainLookup 0 (+0) connect 0 (+0) request 3 (+-1419272753107) response 5653 (+-1419272758757) domLoading 5669 (+-1419272758773) domInteractive -1419272753104 domContentLoadedEvent -1419272753104 (+0) loadEvent -1419272753104 (+0) 

Donc, je voulais augmenter la vitesse, j’ai mis en place une gouttelette Digital Ocean rapide (la plus grande), et le temps est identique. Je comprends qu’une plus grosse gouttelette signifie plus de CPU, donc plus de requêtes simultanées.

Mais alors les questions sont les deux:

  1. Quel est le temps CPU de l’utilisateur en face du temps processeur du système?
  2. Comment puis-je réduire le temps CPU de l’utilisateur?

J’ai presque le même scénario (Petites gouttelettes sur Digital Ocean, Postgres, UWSGI …), et je me casse la tête pour découvrir pourquoi le temps processeur était de ~ 700ms sur une page simple et ~ 3s sur une page plus complexe comme montré sur Django Debug Barre d’outils Mais ensuite, je découvre qu’une grande partie de ce temps était utilisée par la barre d’outils de débogage elle-même. Quand je l’ai éteint et que j’ai mis un autre profileur (le middleware sur http://djangosnippets.org/snippets/727/ ), j’ai vu ces temps descendre à ~ 200 ms et ~ 800 ms.

Alors répondez à vos questions:

  1. Vérifiez la réponse de Chris Pratt sur Django Debug Toolbar: comprendre le panneau de temps

  2. Il n’y a pas de recette unique pour réduire le temps processeur. Vous devrez parsingr la sortie de votre profil pour découvrir où le processeur est utilisé.

J’ai obtenu le middleware de profil de Yugal Jindle: Comment profiler l’application django en fonction du temps d’exécution? . Vérifiez-le pour d’autres options de profileur en utilisant HotShot.