首页 > 解决方案 > NodeJS 监控网站(工作线程?/多进程?)

问题描述

我正在做一个小的应用程序项目,它将监控一些服务器。它将基于 telnet 端口检查、ping,并且还将使用库直接连接到数据库(MSSQL、Oracle、MySQL)来检查它们的状态。

我想知道这个想法的最佳有效解决方案是什么,目前大约有 30 台服务器,它工作得非常顺利,大约需要 2.5 秒来检查所有服务器的状态(运行异步)。但是我担心将来有更多服务器可能会变得更糟。因此考虑使用诸如 Worker Threads 之类的替代方案?或一些多处理?有任何想法吗?一切都发生在内部网络中,所以我预计不会有很大的延迟。

先感谢您。

标签: node.jsparallel-processingmonitoring

解决方案


telnet 的东西是 TCP,Node.js 在使用操作系统级别的网络事件时做得很好。与数据库的连接可能会有所不同。对于 Oracle,您可能会使用 node-oracledb。这些是依赖于 OCI 库和 Node.js 线程池的 SQL*Net 连接。线程池默认为四个线程,但您可以将它增加到每个 Node.js 进程 128 个。有关信息,请参阅此文档: https ://oracle.github.io/node-oracledb/doc/api.html#-143-connections-threads-and-parallelism

说了这么多,除了增加线程池的大小,我不建议你做任何改变。为什么要在燃烧之前扑灭大火?无需过度设计事物。鉴于您拥有的当前服务器数量,您将获得可接受的性能。

您计划在 5 年内增加多少台服务器?如果您对一半服务器和所有服务器运行状态检查,时间上有什么区别?也许您可以使用此类数据对事情的发展方向做出有根据的猜测。

添加新的时,请跟踪检查状态的总时间。是不是在滑倒?如果是这样,请查看花费时间的地方并编写有用的解决方案。


推荐阅读