NodeJS Мониторинг веб-сайта (рабочие потоки? / Мультипроцесс?) - PullRequest
0 голосов
/ 19 апреля 2020

Я делаю небольшой проект приложения, которое будет контролировать некоторые серверы. Он будет основываться на проверке портов, проверять ping, а также использовать библиотеки для прямого подключения к базам данных (MS SQL, Oracle, MySQL) для проверки их состояния.

I Интересно, что будет лучшим эффективным решением для этой идеи, в настоящее время около 30 серверов работают довольно гладко, около 2.5se c, чтобы проверить состояние всех из них (работает asyn c). Однако я обеспокоен тем, что в будущем с большим количеством серверов это может ухудшиться. Значит, вы думаете об использовании какой-нибудь альтернативы, например, рабочих потоков? или какая-то мультиобработка? Любые идеи? Все происходит во внутренней сети, поэтому я не ожидаю больших задержек.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 21 апреля 2020

Те lnet - это TCP, который Node.js отлично справляется с сетевыми событиями на уровне ОС. Соединения с базами данных могут различаться. В случае Oracle вы, вероятно, будете использовать node-oracledb. Это соединения SQL*Net, основанные на библиотеках OCI и пуле потоков Node.js. Пул потоков по умолчанию имеет четыре потока, но вы можете увеличить его до 128 за Node.js процесс. См. Здесь do c для получения информации: https://oracle.github.io/node-oracledb/doc/api.html# -143-connections-threads-and-parallelism

Сказав все это, кроме увеличения размера пула потоков, я не рекомендую вам вносить какие-либо изменения. Зачем бороться с огнями, прежде чем они горят? Не нужно переусердствовать. Вы получаете приемлемую производительность, учитывая текущее количество серверов.

Сколько серверов вы планируете добавить, скажем, через 5 лет? Какая разница во времени, если вы запускаете проверки состояния для половины серверов против всех? Возможно, вы могли бы использовать данные такого рода, чтобы сделать обоснованное предположение о том, где что-то будет go.

По мере добавления новых, отслеживайте общее время, чтобы проверить статус. Это ускользает? Если это так, посмотрите, на что тратится время, и напишите решение, которое поможет.

0 голосов
/ 20 апреля 2020

Вы когда-нибудь пробовали кластерный режим PM2:

https://pm2.keymetrics.io/docs/usage/cluster-mode/

...