Приложение
My Node.js имеет 3 прослушивателя событий, которые получают в общей сложности 5-10 тыс. Событий каждую секунду. Эти функции прослушивания включают отправку запросов INSERT в базу данных PostgreSQL. Например,
foo.on('msg', data => sequelize.create(some_processing(data)));
При запуске приложения узла на облачном сервере с 1 виртуальным ЦП и 1 ГБ ОЗУ загрузка сервера почти всегда составляет 100%. Через некоторое время ORM будет жаловаться на истечение времени ожидания соединения. Я предполагаю, что вызовы функций ставятся в очередь до тех пор, пока для выполнения запроса к базе данных не потребуется больше времени ожидания.
Вопрос: Блокируют ли функции прослушивателя? Если да, то поможет ли это снизить нагрузку на процессор, сделав его асинхронным вызовом fire-and-foreget, и как это можно сделать?
Для моей цели нормально вставлять данные не по порядку поскольку каждая вставленная строка имеет временную метку.
Запуск node.js приложения на первом сервере
- узел v12.14.0
- Ubuntu 18.04
- 1 vCPU, 1 ГБ оперативной памяти, 4 ГБ подкачки, SSD
Работает PostgreSQL на секунду сервер
- PostgreSQL 11,5
- сервер Ubuntu 18.04
- 1 vCPU, 1 ГБ оперативной памяти, 4 ГБ подкачки, SSD
Спасибо!