gheeres / node-activedirectory

ActiveDirectory is an Node.js ldapjs client for authN (authentication) and authZ (authorization) for Microsoft Active Directory with range retrieval support for large Active Directory installations.
MIT License
534 stars 147 forks source link

Connection Pool #132

Open GiladShoham opened 8 years ago

GiladShoham commented 8 years ago

Hi, During the last days i have a lot of customer which has few problems. In general i feel like there is some connection which left open. I have some sync process which send sometime a lot of queries and can can take long time (sync between the AD and mongo). Some time when users try to login the get some connection errors like ECONNREFUED and ECONNTIMEOUT and so on. When they change the sync interval to be bigger it reduce the problems. Also those customers are usually big customer which has some AD replication and they use some dns for the AD and there is different servers beyond. Im not sure if this multiple server are related or not, but maybe i open a connection to one server then it make problems if then i get another server in next call or something like this.

Also i have notice in my local test long time ago that if im trying to run some operation / queries in parallel i get some problems. then i need to wait a bit before running the next operation.

Is there some connection pool mechanism implemented? A way to set it or config it?

Is there a way to see the a logs about connections? I don't want to set the logs to debug because this will just print too much data i can't really read. maybe an info level would be enough?

I use version 0.6.1 of node-activedirectory.

( i would try to test more stuff my self, but those are big production customer, so i can't just play on their production servers.. and can't reproduce such a complicated AD environments locally)

gheeres commented 8 years ago

What is the underlying LDAPJS version that is installed? There were a number of changes to the underlying module and the connection pooling changes which haven't been integrated into ActiveDirectory.js.

The connection pooling is an LDAPJS thing. You need to enable the bunyan logging in LDAPJS to get more information.

GiladShoham commented 8 years ago

The ldapjs version is 0.7.1, is it good for the connection pooling? If i enable the bunyan in activedirectory.js will it pass it to ldapjs or i need to enable it separately?

gheeres commented 8 years ago

if I recall, you have to explicitly enable the bunyan logging for the ldapjs module. Off the top of my head, I don't remember the specifics.

GiladShoham commented 8 years ago

Ok ill check, what about the connection pool?