2014-10-29 39 views
11

Mam wyciek pamięci, który jest trudny do odtworzenia w środowisku testowym. Dlatego chciałbym profilować mój serwer produkcyjny przez ograniczony czas, aby uzyskać informacje o tym, które obiekty zajmują najwięcej pamięci. Wygląda na to, że profilowanie Gunicorn nie jest łatwe ze względu na użycie zielonych.Jak profilować Django na Gunicorn w produkcji

biegnę:

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

To mój 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', 
    ), 
} 

Whats najlepszy sposób na profilowanie pamięci podczas pracy Django z Gunicornem?

+1

można spróbować pisania własnych niestandardowych profilowania middleware. Spójrz na to: https://gun.io/blog/fast-as-fuck-django-part-1-using-a-profiler/. Chociaż autor sugeruje, że sam nie używa skryptu w produkcji. Oto repozytorium, które twierdzi, że robi niektóre z tego, co chcesz zrobić: https://github.com/theospears/django-speedbar –

Odpowiedz