node-modules/agentkeepalive

How to determine/debug if connections are being reused?

Ghazgkull opened this issue · 1 comments

I'm attempting to enable connection reuse for a simple application using this module, but I'm not sure how to verify whether connections are being reused.

I tried adding some simple logging after each request to look at the agent status. Is that the right way to determine if it's working?

Using the default options, I tried making three requests using an HTTPS agent, and I see the following statuses printed using JSON.stringify(agent.getCurrentStatus()). Am I right to think that connections aren't being reused here? Is there any way to debug connection reuse?

Agent status: {"createSocketCount":1,"createSocketErrorCount":0,"closeSocketCount":0,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":1,"freeSockets":{"redacted.com:443::::::::::::::::::":1},"sockets":{},"requests":{}}
Agent status: {"createSocketCount":1,"createSocketErrorCount":0,"closeSocketCount":0,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":1,"freeSockets":{"redacted.com:443::::::::::::::::::":1},"sockets":{},"requests":{}}
Agent status: {"createSocketCount":1,"createSocketErrorCount":0,"closeSocketCount":0,"errorSocketCount":0,"timeoutSocketCount":0,"requestCount":1,"freeSockets":{"redacted.com:443::::::::::::::::::":1},"sockets":{},"requests":{}}```

After further exploration, I think the problem was that I was only using the agent to make serial requests. By swapping my agent scope to reuse the same agent for a large number of parallel requests, the status data started to really make sense and clearly showed connection reuse.

For example:

  agent status: {"createSocketCount":2007,"createSocketErrorCount":0,"closeSocketCount":1382,"errorSocketCount":1,"timeoutSocketCount":1,"requestCount":92467,"freeSockets":{"redacted.com:443::::::::::::::::::":107},"sockets":{"redacted.com:443::::::::::::::::::":518},"requests":{}}```