【发布时间】:2021-09-02 15:09:35
【问题描述】:
在使用 OracleNosql 运行 NodeJs 应用程序时,发现多个连接正在打开并且在执行后没有关闭。当存在高吞吐量或请求超时问题时,连接也会大量打开并且不会关闭。谁能建议如何控制 nodejs 应用程序和 oraclenosql 之间的巨大开放连接。
https://oracle.github.io/nosql-node-sdk/global.html#Config 在此文档中也找不到任何最大连接池大小属性配置。
编辑1:
public noSQLClient: NoSQLClient = new NoSQLClient({
serviceType: ServiceType.KVSTORE,
endpoint: env.DB_HOST
});
【问题讨论】:
-
请看一下配置中的httpOpt。您可以指定与在 node.js 中构造 HTTP.Agent 相同的选项。尝试设置 maxFreeSockets 选项。还有 maxSockets 和 maxTotalSockets,但它们限制了套接字的总数,而不仅仅是未使用的。试试 maxFreeSockets,如果设置有帮助,请告知。
-
@YevgeniyP 我是节点 js 的新手,能否请您帮助我如何创建 httpOpt 并在配置代码中传递引用。在问题中添加了我的配置代码。
-
好的,我发布了一个例子。似乎 maxFreeSockets 的默认值是 256,所以它不是一个很大的数字。在您的情况下,也许首先尝试将 keepAlive 设置为 false,这应该确保没有连接处于打开状态,但可能会降低性能,因为必须为每个请求创建新连接。
-
另一个问题,你的应用发出多少并发请求?
-
平均至少有 100 个用户发现了这个问题,当我们运行 PT 时发现 10000 个打开的连接,大于 maxFreeSockets-256,任何想法的原因是什么
标签: node.js npm oracle-nosql