我们在搭建网站的时候,会遇到各种连接数限制问题,主要的症状表现为Failed to establish a new connection。
意思是没有办法再去创建新连接了,这个时候就会导致超时的情况发生,如果是python的requests,则会重复尝试很多次,最终出现timeout的错误。
一般新人可能会错认为这个错误是由于网络问题,或者是对方服务器不稳定,很少会找到自身的原因,其实这个根源还是代码规范的问题。
小编遇到的情况属于这一种情况:高频率的使用requests请求,却没有及时关闭连接。
那么怎么做出改进呢?
ipdata = requests.get("https://www.xxxxxx.com",timeout=5,headers={'Connection':'close'})
上述的代码是一个简单的get请求,首先在headers中加入一个关闭的标记,告知服务器请求结束后能够正确被关闭,然后设置一个超时的时间为5秒。
如果不设置这个时间,默认的超时时间会非常久,大概1~2分钟。
关于连接数的其他问题,Linux服务器默认会有一个TCP连接数限制,数值是1024,可以把这个值改大成65535。
其他应用也有可能会局部设置连接数上限,比如说nginx和tomcat,通常来说,他们的限制可能不是由于系统级别导致的,所以在发生问题之时,可以多看看他们的局部配置是怎么样的。