Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Особенности работы backend для мобильных приложений, или Python Django UWSGI в продакшен

Особенности работы backend для мобильных приложений, или Python Django UWSGI в продакшен

Дмитрий Швеенков @ Moscow Python #39

О жизни наших проектов в продакшен.
Как мы используем python-django-uwsgi для backend мобильных приложений.
Что важно в backend для его работы?
Как измерить время о оценить качество работы backend?
Как переносим большие пиковые нагрузки?
Как настраиваем сервера, какие "ручки" крутим в ОС, чтобы все работало.
Немного о профилировании django, memcached в python.

http://www.moscowpython.ru/meetup/39/osobennosti-raboty-backend-dlja-mobilnyh-prilozhen/

Moscow Python Meetup

September 22, 2016
Tweet

More Decks by Moscow Python Meetup

Other Decks in Programming

Transcript

  1. 3

  2. API - : - - - iOS - Android -

    Windows phone - . . - 6
  3. ЛКМkОnН? - ЛКМkОnН - timeit $ python -m timeit '"-".join(str(n)

    for n in range(100))' - - wrk, ab, siege - Nginx access logs log_format main '$remote_addr - [$time_local] "$request" ' '$status $bytes_sent $request_length ' '$request_time $upstream_response_time' 9
  4. upstrОКmИrОsponsОИtТmО ? upstrОКmИrОsponsОИtТmО (20 + 10 + 20 + 10

    + 10 + 20 + 500 + 500 + 500 + 400) / 10 = 199 http://bit.ly/2d4z5zi $ fgrep "13/Sep/2016:10:" access.log | awk '{print $NF}' | sort -n | python percentile_stdin.py 11
  5. - Statsd+Graphite+Grafana https://github.com/bitly/statsdaemon http://graphiteapp.org/ http://grafana.org/ - uаsРТ --carbon 127.0.0.1:2003 -

    DТКmonН Мpu, lК, nОtаork ТostКt https://github.com/python-diamond/Diamond - Х - Тos/КnНroТН - http://bit.ly/2d8fcHl 12
  6. - - qps ЛКМkОnН - qps - uаsРТ-workers аorkОrs? http://bit.ly/2cDjGpA

    cpu cores x 2 , pвtСon – django – uwsgi – nginx 13
  7. nРТnб http://bit.ly/2cfxEkh: - uwsgi_buffers - uwsgi_buffer_size location /news { uwsgi_pass

    mobs_backend; include uwsgi_params; uwsgi_buffers 256 16k; } 16
  8. НjКnРo-python © http://bit.ly/2cV82Gg http://bit.ly/2ckeTKS pip install django-extensions INSTALLED_APPS += ('django_extensions',)

    python manage.py runprofileserver --use-cprofile --prof-path=~/prof wget -O- -S http://127.0.0.1:8000/news/v2/getNewsById?id=291235 gprof2dot -f pstats ~/prof/out.prof | dot -Tpng -o ~/prof/out.png 17
  9. 18

  10. 19

  11. - ЛКМkОnН ЛКМkОnН аОЛ - pвtСon – django – uwsgi

    – nРТnб - ЛКМkОnН - ЛКМkОnН 22
  12. mвsql - mвISAM, - key_buffer_size >= sum(du -hs *.MYI) -

    ssd - mysql_query_cache - mysql_slow_query_log 24