net/http使用
一般比较关心的参数分两部分:context参数和连接参数
context参数是指建立连接时涉及的参数包括超时,保活参数
连接参数是指与pool相关的参数包括:最大空闲连接数,最大连接数和空闲超时时间。
尤其是最大连接数,默认是没有限制的,如果并发量大的时候会引起大量的连接,进而导致性能下降。
所以需要根据实际情况合理调整最大连接数参数的配置。另外,这里的最大连接数也只是针对单个host的限制,
暂时没找到限制总连接数及主机连接池的控制入口。
net/http的连接池是默认全局共用的,假如后端主机虽然只有一百多台,如果我有100个协程,
有概率会出现同时针对一主机并发访问,那么一个主机就有100个连接,100个后端主机就会产生10000个连接。
这问题的概率在生产环境中经常出现。100台没问题,那么更多呢? 单ip在主动连接可用的端口不到65535的…
所以,大家也要考虑到这问题。
简单的做法可以在进程的连接数做计数,当达到一定的阈值后,进行短连接请求, 但这样带来的问题是time wait过多,
重复的建连效率也在下降。