Nodejs HTTP Agent

Node.js 中的 http.Agent 用于池化 HTTP 客户端请求的 socket (pooling sockets used in HTTP client requests). 也就是复用 HTTP 请求时候的 socket. 如果你没有指定 Agent 的话, 默认用的是 http.globalAgent.

只要用了agent,

  1. 当socket空闲下来,只要有未分配的请求,都会进行复用,不管设置没设置keepalive。
  2. 如果当前没有未分配的请求
    1. 如果设置了keepalive,会根据maxSockets和freeSockets参数判断是否把这个socket暂存到freeSockets队列等待以后使用,并开启操作系统的TCP的keepalive功能。
    2. 如果没设置keepalive,这个空闲的socket直接干掉