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?
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 –