使用长连接能够减少建立销毁连接的消耗,三次握手、四次挥手对性能影响是很大的。一般 RPC 如 Dubbo 默认都是长连接的,HTTP 1.1 之上也可以支持长连接了,HTTP 2.0 也支持了单一长连接的多路复用。
一般 HTTP 服务前面都会挂 nginx 做负载均衡,那么长连接的设置也分为从客户端到 nginx、从 nginx 到服务端两部分。
如果使用 Java 的 apache HTTPClient 可以通过设置 ConnectionKeepAliveStrategy 和协议为 HTTP1.1 来使用长连接,对于 4.2.x 版本设置方法如下所示:
private static final ConnectionKeepAliveStrategy KEEP_ALIVE_STRATEGY = new ConnectionKeepAliveStrategy() {
public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
HeaderElementIterator it = new BasicHeaderElementIterator(
response.headerIterator(HTTP.CONN_KEEP_ALIVE));
while (it.hasNext()) {
HeaderElement he = it.nextElement();
String param = he.getName();
String value =

本文探讨了HTTP长连接在性能优化中的作用,指出其能减少TCP连接的创建和销毁开销。内容涵盖了Dubbo默认的长连接设置,以及HTTP 1.1和2.0对长连接的支持。重点讨论了在Java中使用Apache HTTPClient实现长连接的配置,以及在NGINX中设置`keepalive_timeout`和`keepalive_requests`参数的重要性。同时,提到了Spring Boot 2.x中调整长连接配置的方法,并警告了在连接关闭后不检查有效性的潜在风险及应对策略。
最低0.47元/天 解锁文章
1052

被折叠的 条评论
为什么被折叠?



