如果MaxIdleConnsPerHost
设置为较高的数字,假设为1000,则打开的连接数仍将取决于其他主机,对吗?我的意思是,允许与同一主机建立 1000 个空闲连接将导致打开 1000 个连接,只要这些连接不被其他主机关闭?
因此,有效地将此值设置为较大的数字将导致永远不会关闭连接,而是等待其他主机执行此操作? 我是否正确解释了这一点?
你的理解是正确的。 MaxIdleConnsPerHost
限制有多少个连接未主动为请求提供服务,但客户端尚未关闭。
空闲连接对于 Web 浏览器很有用,因为它们可以继续重用连接,以便对同一服务器的后续 HTTP 请求。但是,空闲连接会给服务器带来成本。它们使用内核资源,并且您可能会遇到每个进程的限制或内核对打开的连接、文件或句柄数的限制,这可能会导致程序中出现意外错误,甚至导致同一台计算机上的其他程序出现意外错误。
因此,在将MaxIdleConnsPerHost
增加到大量时要小心。仅当您在短时间内看到来自相同客户端的许多连接时,才有意义地增加空闲连接。