如何查询服务端的keep-alive配置参数值
查询服务端HTTP Keep-Alive配置的可用方法
HTTP协议没有定义标准的查询接口来直接获取服务端的Keep-Alive配置,你可以通过以下两种方式得到对应数值:
1. 读取服务端响应头
如果服务端主动配置了暴露Keep-Alive参数,你可以直接通过curl获取:
curl -v <目标服务地址>
在返回的响应头中查找Keep-Alive字段,格式示例如下:
Keep-Alive: timeout=30, max=100
其中timeout就是服务端允许的空闲连接最大保留时长,单位为秒;max为单个长连接最多可处理的请求数。
仅服务端配置了返回该头时才会出现,默认配置的Nginx、Apache等服务通常不会主动返回该字段
2. 手动探测超时时间
如果服务端没有返回对应响应头,可以通过长连接复用测试得到精确的超时值:
- 用curl建立长连接发送第一个请求,记录当前时间
- 间隔指定时长后复用同一个连接发送第二个请求,校验连接是否被服务端主动关闭
- 逐步调整间隔时长,找到连接可正常复用的最大间隔,即为服务端的Keep-Alive超时值
你可以使用如下curl命令完成测试:
curl -v --keepalive-time <测试时长> <目标服务地址> <目标服务地址>
该命令会复用同一个TCP连接发送两次请求,逐步调整--keepalive-time的数值直到第二次请求不会触发连接关闭报错,即可得到近似的服务端超时值。
客户端配置建议
获取到服务端超时值后,建议将客户端的Keep-Alive超时设置为比服务端值小10~20秒,避免客户端发送请求时刚好遇到服务端主动关闭连接,产生异常报错。
内容的提问来源于stack exchange,提问作者vipin
相关产品推荐
相关产品推荐

