2016-12-26 4 views
8

Мой стек технологий - это Redis в качестве бэкэнда каналов, Postgresql в качестве базы данных, Daphne как сервер ASGI, Nginx перед всем приложением. Все развертывается с использованием Docker Swarm, только с Redis и Database. У меня около 20 виртуальных хостов, с 20 серверами интерфейсов, 40 рабочих HTTP и 20 рабочих. Балансировка нагрузки выполняется с использованием Inject overlay Docker network.Как профилировать каналы django?

Проблема в том, что иногда происходят очень странные вещи в отношении производительности. Большинство запросов обрабатываются менее чем в 400 мс, но иногда запрос может занимать до 2-3 секунд даже при очень небольшой нагрузке. Профилирующие специалисты с Django Debug Toolbar или профайлерами на основе промежуточного программного обеспечения ничего не показывают (время 0,01 с или около того)

Мой вопрос: есть ли хороший способ профилирования всего пути запроса с помощью django-каналов? Я хотел бы, сколько времени занимает каждая фаза, т. Е. Когда запрос обрабатывался Дафной, когда рабочий начал обрабатывать, когда он закончил, когда сервер интерфейса отправил ответ клиенту. В настоящее время я понятия не имею, как это решить.

+2

В случае, если кому-то интересно, кажется, автор этого сообщения отправился и спросил группу Google: https://groups.google.com/forum/#!topic/django-users/_aG8Py_r2QY – raiderrobert

+1

Да, это мой вопрос , Я нашел несколько полезных методов, один из которых - мониторинг redis. В ближайшее время я опубликую подробное описание. – Valar

+0

С нетерпением ждем, что сработало для вас. – jaywhy13

ответ

0

Почему бы не использовать инструмент мониторинга, например, Kibana или New Relic, и следить за тем, почему и что так долго требуется для небольшой реакции полезной нагрузки. Он может рассказать вам время, потраченное на Python, PostgreSQL и Memcache (Redis).

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