Как оптимизировать производительность Node.js при запуске множества фоновых Telegram-ботов?
Всем привет!
У меня есть сервер с параметрами: 8 GB RAM, 4 CPU, 150 GB NVMe SSD. На нём запущено несколько(около 9 активных) Telegram-ботов, написанных на Node.js + TypeScript+Grammy, каждый бот работает в отдельном процессе(systemd + nginx + unix socket). При запуске всех ботов как systemd фоновым процессом, начинаются микрозадержки(microdelays) я рассматривал вариант переписать пару ботов на golang, но сразу остановился, потому что мне придется учить язык Golang практически с нуля, что не хочется.
Все работает на вебхуках
Я понимаю, что у Node.js есть свои ограничения с однопоточным event loop, но хотелось бы понять, какие есть лучшие практики и подходы для оптимизации работы таких приложений:
Как можно улучшить использование памяти и CPU в Node.js при запуске множества параллельных процессов?
Возможно, стоит рассмотреть переход на другие языки или технологии — если да, то на какие и почему?
Есть ли готовые решения или архитектурные паттерны, которые помогают масштабировать подобные сервисы?
Буду благодарен за рекомендации, примеры, ссылки на статьи или свои личные кейсы.
«Пользователь удалён», а что node.js прям такой быстрый и замечательный?
Да, у меня есть микрозадержки, но на это я закрывал глаза пока не опубликовал статью в dev.to и reddit с протестировать два моих бота и вот тут у меня пошло просто очень много микрозадержек, что многие жаловались что обработка файлов, видео и тд занимает много времени.
Естественно мне это очень все не нравится и я хочу чтоб ответ бота занимал меньше 10мс и не жрал по 300-700мб памяти только с одного бота.
Конечно быстрая и замечательная. А иначе она не была бы такой популярной.
многие жаловались что обработка файлов, видео и тд занимает много времени.
Вооот, уже какой-то прогресс есть - у вас там идёт обработка файлов и видео. Это всё - тяжёлый контент. Если вы то же самое напишете хоть на сях - у вас будет результат такой же, т.к. замена ЯП не изменит скорость работы оборудования, а так же архитектуру и логику вашего кода.
попробуй каждого бота запускать в своем docker контейнере. У меня на не самом быстром сервере - 2 ядра по 1.5ггц и 8гб озу запущено 5 ботов и еще куча контейнеров не связанных с нодой. Полет нормальный