Прежде всего позвольте мне начать с того, что я не являюсь экспертом по NodeJS или Unix (.Net и Windows - моя сильная сторона), поэтому извините, если я задаю вопросы, на которые я должен знать ответы.
Для проекта, над которым я работаю, мы используем сервер NodeJs, который использует пакет activedirectory. Мы обращаемся к серверу AD / LDAPS, чтобы получить пользователя и проверить некоторые атрибуты. Вот код, о котором идет речь:
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 года, и он не обновлялся, и я не могу достать оригинального автора или найти другой пакет, который работает через LDAPS с сервером Windows AD от NodeJS.
Любойпомощь или предложения будут полезны. Работающий Node v11.12.0 и Red Hat Enterprise Linux v7.6, ядро v3.10.0-957.el7.x86_64