MongoDB Log Fix: Connection Timeout (SocketException 10060)
Symptom
The hub service log for Netwrix Change Tracker shows the following error:
MongoDB.Driver.MongoConnectionException: An exception occurred while receiving a message from the server.
System.IO.IOException: Unable to read data from the transport connection:
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
System.Net.Sockets.SocketException (10060):
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
Cause
Under load, concurrent requests to the MongoDB instance can exceed the driver's connection pool size (maxPoolSize), causing new requests to queue for an available connection. If a request waits longer than the driver's connection timeout (connectTimeoutMS) for a connection to become available, it fails with this error.
Resolution
Increase the IIS pool size and the MongoDB connection timeout to prevent requests from timing out:
-
Open an elevated Command Prompt and stop IIS:
iisreset /stop -
Navigate to
C:\inetpub\wwwroot\Change Tracker Generation 7 (NetCore) Hub\Configs\and openappsettings.Production.json.IMPORTANT: Back up the file before editing it.
-
Locate the
connectionStringline:"connectionString": "mongodb://%IP_address%"Edit the line to add
maxPoolSizeandconnectTimeoutMS:"connectionString": "mongodb://%IP_address%/?maxPoolSize=500&connectTimeoutMS=120000" -
Save the changes and start IIS:
iisreset /start
After IIS restarts, the Hub can maintain more concurrent MongoDB connections and allows more time for each request to complete before timing out.