Как оптимизировать производительность 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 при запуске множества параллельных процессов?
Возможно, стоит рассмотреть переход на другие языки или технологии — если да, то на какие и почему?
Есть ли готовые решения или архитектурные паттерны, которые помогают масштабировать подобные сервисы?
Буду благодарен за рекомендации, примеры, ссылки на статьи или свои личные кейсы.
Ты ведь реально даже не пытался найти узкие места, из-за чего у тебя происходят затыки, ты можешь объяснить? Какой смысл переписывать на другой ЯП, если будет так же криво и с аналогичными проблемами.
Everything_is_bad, а что node.js прям такой быстрый и замечательный?
Да, у меня есть микрозадержки, но на это я закрывал глаза пока не опубликовал статью в dev.to и reddit с протестировать два моих бота и вот тут у меня пошло просто очень много микрозадержек, что многие жаловались что обработка файлов, видео и тд занимает много времени.
Естественно мне это очень все не нравится и я хочу чтоб ответ бота занимал меньше 10мс и не жрал по 300-700мб памяти только с одного бота.
Psychedelic Geek, еще раз, ты можешь сказать где именно у тебя затык в коде? Почему ты сразу не стал делать базовые вещи - дебаггинг и профилирования? Зачем столько общих слов, которые никак не решают твою проблему?
Поиск узкого места, его оптимизация и так далее по кругу, это основа развития сервисов.
Конечно быстрая и замечательная. А иначе она не была бы такой популярной.
многие жаловались что обработка файлов, видео и тд занимает много времени.
Вооот, уже какой-то прогресс есть - у вас там идёт обработка файлов и видео. Это всё - тяжёлый контент. Если вы то же самое напишете хоть на сях - у вас будет результат такой же, т.к. замена ЯП не изменит скорость работы оборудования, а так же архитектуру и логику вашего кода.