Мой технологический стек - это Redis как серверная часть каналов, Postgresql как база данных, Daphne как сервер ASGI, Nginx перед всем приложением. Все развертывается с использованием Docker Swarm, снаружи остаются только Redis и база данных. У меня около 20 виртуальных хостов с 20 интерфейсными серверами, 40 работниками http и 20 работниками websocket. Балансировка нагрузки выполняется с помощью оверлейной сети Ingress Docker.
Проблема в том, что иногда с производительностью происходят очень странные вещи. Большинство запросов обрабатываются менее чем за 400 мс, но иногда запрос может занять до 2–3 с, даже при очень небольшой нагрузке. Профилирование рабочих с помощью панели инструментов Django Debug Toolbar или профилировщиков на основе промежуточного программного обеспечения ничего не показывает (время примерно 0,01 с)
Мой вопрос: есть ли хороший метод профилирования всего пути запроса с помощью django-каналов? Мне бы хотелось, сколько времени занимает каждая фаза, то есть когда запрос был обработан Дафной, когда рабочий начал обработку, когда она закончилась, когда сервер интерфейса отправил ответ клиенту. В настоящее время я не знаю, как это решить.