2014-10-29 9 views
11

Ich habe ein Speicherleck, das in Testumgebung schwer zu reproduzieren ist. Daher möchte ich meinen Produktionsserver für einen begrenzten Zeitraum profilieren, um einen Überblick darüber zu erhalten, welche Objekte den meisten Speicher belegen. Es scheint, dass es wegen der Verwendung von Greenlets nicht einfach ist, Gunicorn zu profilieren.Wie profiliere ich Django auf Gunicorn in Produktion

Ich bin mit:

  • Python 2.7.3
  • Gunicorn 18,0
  • Django 1,6

Das ist mein Gunicorn config:

CONFIG = { 
    'environment': { 
     'DJANGO_SETTINGS_MODULE': 'myapp.settings', 
    }, 
    'user': 'myapp', 
    'group': 'myapp', 
    'args': (
     '--bind=127.0.0.1:8088', 
     '--workers=8', 
     '--worker-class=socketio.sgunicorn.GeventSocketIOWorker', 
     '--timeout=300', 
     '--error-logfile=/var/log/gunicorn/myapp-error.log', 
     '--max-requests=100', 
     '--log-level=debug', 
     'myapp.wsgi:application', 
    ), 
} 

Was ist der Die beste Möglichkeit, Speicherprofile beim Ausführen zu erstellen Django mit Gunicorn?

+1

Sie könnten versuchen, Ihre eigene Profilierung Middleware zu schreiben. Schau dir das an: https://gun.io/blog/fast-as-fuck-django-part-1-using-a-profiler/. Allerdings schlägt der Autor selbst vor, das Skript nicht in der Produktion zu verwenden. Hier ist ein Repo, das behauptet, etwas von dem zu tun, was Sie tun möchten: https://github.com/theospears/django-speedbar –

Antwort