2015-02-17 2 views
0

У меня есть приложение Flask и база данных PostgreSQL. С некоторого момента приложение начало вести себя неустойчиво: время ответа очень велико, и по какой-то причине процесс приложения Flask занимает 60% доступной памяти. В конце концов (при использовании нескольких дней безотказной работы, примерно от 3 до 5) приложение становится непригодным, из-за того, что каждое взаимодействие с ним занимает больше минуты, чтобы завершить или тайм-аут прямо.Как диагностировать плохую работу колбы?

Как я могу диагностировать это поведение? Есть ли правильный способ определить, откуда возникают задержки и почему так много памяти используется?

ответ

3

Вы можете профилировать приложение Flask, используя встроенный профайлер WERKZEUG, добавив следующий код:

from werkzeug.contrib.profiler import ProfilerMiddleware 
from app import app 

app.config['PROFILE'] = True 
app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions = [30]) 
app.run(debug = True) 

Или вы могли бы запустить его из командной строки с Flask-runner:

$ python hello.py --profile --profile-count 30 

А что касается Postgres, возьмите посмотрите на logging documentation.

Смежные вопросы