Telegram-бот с AI зависает: где копать, чтоб понять узкое место?
Ребята, такая тема - сделал телеграм-бота на GPT-4 по API для поддержки. Вроде работает, но временами виснет на пару минут, молчит совсем. Не могу понять, где тормоз - то ли запросы долго обрабатываются, то ли сеть подвисает, либо очередь заданий заваливается. Логи есть, но они совсем общие, и при наплыве параллельных запросов вообще непонятно, что именно тормозит.
Пробовал сначала логировать тайминги на каждом этапе - от получения сообщения до отправки ответа. Выяснил, что иногда API OpenAI отвечает с лагами в пару десятков секунд, особо под нагрузкой, но не всегда. Пробовал ставить асинхронный роутинг запросов на aiogram, чтобы не блокировать основной цикл - вроде улучшило ситуацию, но виснуть всё равно продолжает. Ещё пытался ставить очередь на redis с ограничением параллельных вызовов, вроде меньше подвисаний, но теперь очередь тоже становится бутылочным горлышком, если приходят одновременно много запросов.
По сети вроде проблем нет, проверял с помощью ping и traceroute, узких мест нет; сервер, где бот лежит - VPS с нормальными параметрами. Кажется, что либо внутри самого API GPT четко обрабатывает тяжелые запросы, либо где-то в промежуточном коде не успеваю выгружать таски. Хотел начать профайлить Python скрипт через cProfile, но пока нет времени полностью разобраться, кажется, что именно там тормоза появляются.
В общем сейчас накатываю больше подробных логов с замерами времени, плюс думаю поиграться с разными вариантами пуллинга и кеширования, но пока муторно без ясной точки входа в проблему.