Здравствуйте. В процессе создания чат-бота для ВКонтакте на Python3, aiohttp, gunicorn возникла проблема. Бот не выдерживает нагрузку с рекламы в 5 сообщений/сек. Загрузка CPU возрастает до 50%, а бот отвечает каждому пользователю с задержкой в 5-6 секунд. Бот работает на CallBack api. Пробовал множество вариантов (Flask, async, aiohttp, gunicorn workers), всё сводится к тому, что бот при нагрузке отвечает каждому с огромной задержкой в 5 секунд.
Подскажите, может есть какие-нибудь варианты пофиксить проблему?
Очень вероятно, что задержка происходит на стороне Vk, но нужно детально ресёрчить и искать bottleneck. Нагрузка 50% CPU вполне штатная и в данном случае нужно смотреть с нагрузкой на сеть. Вероятно, поможет горизонтальное масштабирование (у callback api есть возможность указывать несколько серверов).
Оказалось, что узким местом был MongoDB сервер, про который мы вообще забыли и оставили на нём 1 ядро и 1 gb ОЗУ. После масштабирования сервера все задержки исчезли.