Chromium内核浏览器访问localhost时的初始连接(initial connection)高延迟问题

HearyHTTPd代码里设置为监听的host为127.0.0.1时,在Chrome中用 http://localhost:8080 会有较大initial connection lantency从而变得较慢,而用 http://127.0.0.1:8080 访问则很快。

Chromium内核浏览器访问localhost时的初始连接(initial connection)高延迟问题

1 问题描述

在开发基于NIO的HearyHTTPd服务器的时候,发现使用 http://localhost:8080 访问时,存在高初始连接(initial connection)延迟的问题,影响达数百毫秒。

经过对比和排查,发现问题仅限于基于Chromium内核的浏览器,而Firefox浏览器表现出了稳定且高速的性能。

2 实验结果

通过netstat -an发现,不论输入的监听host为localhost,还是127.0.0.1,在计算机上监听的都是127.0.0.1:8080,没有监听IPv6的[::1]:8080

2.1 Chromium内核浏览器

测试的Chromium内核浏览器:

  • Google Chrome 83.0.4103.106(正式版本) (64 位)
  • Microsoft Edge 83.0.478.54 (官方内部版本) (64 位)

两款浏览器差异不大,数值范围几乎一致。

测试结果:

hhttpd hostrequestlocalhost:8080127.0.0.1:8080[::1]:8080
localhost首个文件(index.html)3~10 ms3~10 msERR_CONNECTION_REFUSED
后续资源(js/css/fonts...)250~700 ms3~20 msERR_CONNECTION_REFUSED
127.0.0.1首个文件(index.html)3~10 ms3~10 msERR_CONNECTION_REFUSED
后续资源(js/css/fonts...)250~700 ms3~20 msERR_CONNECTION_REFUSED
[::1]首个文件(index.html)3~10 msERR_CONNECTION_REFUSED3~10 ms
后续资源(js/css/fonts...)3~20 msERR_CONNECTION_REFUSED3~20 ms

2.2 Firefox浏览器

测试的Firefox浏览器:

  • Firefox 77.0.1 (64 位)

测试结果:

hhttpd hostrequestlocalhost:8080127.0.0.1:8080[::1]:8080
localhost首个文件(index.html)2~4 ms1~2 msERR_CONNECTION_REFUSED
后续资源(js/css/fonts...)2~15 ms2~10 msERR_CONNECTION_REFUSED
127.0.0.1首个文件(index.html)2~4 ms1~2 msERR_CONNECTION_REFUSED
后续资源(js/css/fonts...)2~15 ms2~10 msERR_CONNECTION_REFUSED
[::1]首个文件(index.html)2~4 msERR_CONNECTION_REFUSED1~2 ms
后续资源(js/css/fonts...)2~15 msERR_CONNECTION_REFUSED2~10 ms

2.3 实验总结

从结果上来看,通过localhost访问hhttpd的高初始连接(initial connection)延迟问题仅出现在基于Chromium内核的浏览器上。

从分布来看,直接使用IP地址访问监听的IP地址(不论IPv4还是IPv6)都是最快的。

总体而言,Firefox表现出的性能最好。

3 原因分析

暂时还没有找出造成该问题的准确原因。

推测可能与Chromium遇到localhost时,优先访问IPV6的本地环回地址[::1]有关。

4 解决方案

推荐直接使用IP地址访问监听的IP地址(不论IPv4还是IPv6)。

5 参考资料

stalled和Initial connection偶尔请求时间长

Why is the initial connection time for a HTTP request so long?

转载:Chromium内核浏览器访问localhost时的初始连接(initial connection)高延迟问题 | Heary's Blog

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值