Поиск узкого места для асинхронных задач, которые замедляются в целом
Какие хорошие инструменты для Python asyncio устраняют узкие места в производительности? У меня есть веб-сервер Quart, который является интерфейсом для серверной части, поддерживающей соединения SSH (черезparamiko
) на несколько устройств (около 30 или 40). Что я заметил, так это то, что после того, как все эти соединения запущены и работают, веб-интерфейс, похоже, сильно замедляется. Запросы выполняются долго, и я вижу массу предупреждений в консоли, где asyncio предупреждает о медленных задачах.
Проблема в том, что многие методы, о которых предупреждает asyncio, на самом деле больше не имеют ничего, что блокировало бы основной поток. я пыталсяyappi
искать медлительность в основном потоке, но это мало помогает.
Я начинаю задаваться вопросом, является ли это либо общим голоданием цикла выполнения, и у меня просто слишком много задач, либо есть какие-то другие ресурсы, которые получают здесь ограничение, которое может вызвать это.
Моя проблема заключается в отсутствии инструментов отладки. Мне бы хотелось увидеть графическое представление того, какой метод занимает, сколько времени и чего он ждет.