Node.js Unix上的NodeJS Activedirectory包泄漏套接字
首先,让我先说我不是NodeJS或Unix专家(.Net和Windows是我的强项),所以如果我问一些我应该知道答案的问题,请原谅 对于我正在进行的一个项目,我们使用的是使用activedirectory包的NodeJs服务器。我们调用AD/LDAPS服务器来获取用户并验证一些属性。以下是相关代码:Node.js Unix上的NodeJS Activedirectory包泄漏套接字,node.js,active-directory,redhat,Node.js,Active Directory,Redhat,首先,让我先说我不是NodeJS或Unix专家(.Net和Windows是我的强项),所以如果我问一些我应该知道答案的问题,请原谅 对于我正在进行的一个项目,我们使用的是使用activedirectory包的NodeJs服务器。我们调用AD/LDAPS服务器来获取用户并验证一些属性。以下是相关代码: var adConfig = { url: "ldaps://" + adServer, baseDN: "DC=ad,DC=onsemi,DC=com", username
var adConfig = {
url: "ldaps://" + adServer,
baseDN: "DC=ad,DC=onsemi,DC=com",
username: config.ldaps_username,
password: config.ldaps_password,
tlsOptions: {
rejectUnauthorized: false
}
};
var ad = new activeDirectory(adConfig);
ad.findUser(userId, true, (error, user) => {
...
}
每运行10次,该代码就会泄漏大约150个套接字。我通过“lsof | grep node”命令检查了打开的套接字,这是我从初始基线调用中获得的新添加类型:
node 14493 14498 mesiapp mem REG 253,2 105824 2101177 /usr/lib64/libresolv-2.17.so
node 14493 14498 mesiapp mem REG 253,2 31408 2101165 /usr/lib64/libnss_dns-2.17.so
node 14493 14498 mesiapp mem REG 253,2 61624 2101167 /usr/lib64/libnss_files-2.17.so
node 14493 14497 mesiapp 25u sock 0,7 0t0 312395132 protocol: TCP
node 14493 14497 mesiapp 26u sock 0,7 0t0 312395133 protocol: TCP
node 14493 14497 mesiapp 27u sock 0,7 0t0 312395134 protocol: TCP
node 14493 14497 mesiapp 28u sock 0,7 0t0 312395135 protocol: TCP
node 14493 14497 mesiapp 29u sock 0,7 0t0 312392286 protocol: TCP
node 14493 14497 mesiapp 30u sock 0,7 0t0 312395136 protocol: TCP
node 14493 14497 mesiapp 31u sock 0,7 0t0 312395137 protocol: TCP
node 14493 14497 mesiapp 32u sock 0,7 0t0 312395138 protocol: TCP
node 14493 14497 mesiapp 33u sock 0,7 0t0 312395139 protocol: TCP
node 14493 14497 mesiapp 34u sock 0,7 0t0 312395141 protocol: TCP
这些描述符永远不会被回收,最终我们会用完它们。这似乎只发生在我们的Redhat linux服务器上。当我在Mac上运行服务器时,文件描述符不会在每次调用时增加
我正在寻找关于任何其他调试策略的帮助,以找到泄漏的来源。我找不到任何更详细的lsof设置,我已经尽可能多地查看了activedirectory js代码,找不到正在使用的任何直接套接字。不幸的是,这段代码已经4年了,还没有更新,我无法找到原始作者,也无法从NodeJS找到另一个通过LDAPS与Windows广告服务器协同工作的软件包
任何帮助或建议都会有所帮助。运行节点v11.12.0和Red Hat Enterprise Linux v7.6,内核v3.10.0-957.el7.x86_64您看到该软件包了吗?这是一个分叉的包,但仍然保持。感谢那个建议,我用那个包测试了它,但仍然是一个问题。我倾向于猜测这可能是服务器问题,而不是代码问题,但我对Unix的了解还远远不够,所以不知道从哪里开始。相同的问题可以在两个不同的unix服务器上复制。您可以随时在GitHub上查看维护人员是否有任何想法。您看到该软件包了吗?这是一个分叉的包,但仍然保持。感谢那个建议,我用那个包测试了它,但仍然是一个问题。我倾向于猜测这可能是服务器问题,而不是代码问题,但我对Unix的了解还远远不够,所以不知道从哪里开始。同样的问题可以在两个不同的unix服务器上复制。您可以随时在GitHub上查看维护人员是否有任何想法。