首次访问的页面加载时间很慢

首次访问的页面加载时间很慢

我在 HP Omen 笔记本电脑上安装了 ubuntu 18.04。

我注意到,每当我访问一个我以前没访问过或过去几个小时没访问过的网站时,加载时间就会太长(2-5 秒)。第一次之后,如果我稍后访问,则需要“正常”时间(0.1-0.5 秒)。

我已经尝试过/将要提及的:

  • 我在 Chrome 和 Firefox 上都进行了测试,发现两者都存在同样的问题。
  • 无线和有线测试:出现相同的问题。
  • 我已经禁用了 Chrome 的硬件加速器,但没有帮助。
  • 在同一网络上运行 Windows 操作系统的另一台计算机没有此问题。

以及一些测试(听取 heynnema 的建议):

time host www.booking.com

首次运行上述程序时(2.4 秒)

real    0m2,410s
user    0m0,010s
 sys    0m0,000s

再次运行(0.01秒):

real    0m0,011s
user    0m0,000s
 sys    0m0,010s

我也在其他网站上进行了测试,发现有些网站第一次运行时甚至达到了 6 秒。

編輯1

还:

ls -al /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Σεπ   3 21:00 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

和:

cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to 
the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS 
servers
# currently in use.
#
# Third party programs must not access this file directly, but only 
through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a 
different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported 
modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0

和:

ip addr | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
5: br-44cc05437844: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
6: br-a928e5f9d267: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

/etc/systemd/resolved.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, 
try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat systemd
group:          compat systemd
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns myhostname
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

/etc/systemd/resolved.conf

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See resolved.conf(5) for details

[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

編輯2

还可以使用使用 curl 找出网站加载过程中的哪个部分给您带来了麻烦(以下示例使用 www.booking.com)我得到以下结果:

  DNS lookup                          :  6,516376
  Connect to server (TCP)             :  6,718620
  Connect to server (HTTP/S)          :  0,000000
  Time from start until transfer began:  6,718712
  Time for redirection (if any)       :  0,000000
  Total time before transfer started  :  6,950434

         Total time                   :  6,950476
         Size of download (bytes)     :  0
         Average d/l speed (bytes/s)  :  0,000

看来 DNS 查找花费的时间最长。

知道为什么会发生这种情况吗?谢谢

编辑3

我已经创建了一个新的 resolv conf 文件resolv8.conf,其中/run/systemd/resolve包含以下内容(google dns):

nameserver 8.8.8.8
nameserver 8.8.4.4

以及一个新的符号链接:

sudo ln -s /run/systemd/resolve/resolv8.conf /etc/resolv.conf

现在host -v ..,DNS查询时间合理了。但是,存在“附带损害”。每次重启我都会丢失文件resolv8.conf,因此我必须重写它并再次创建新的符号链接。此外,经过这些更改后,chrome 浏览可以正常工作,但 Firefox 不行,我无法访问任何网站(?也许我需要对 networkManager 做些什么?)。

我完全不明白为什么现在更快了。

另外,有没有好的方法让更改永久生效?当我连接到我家以外的其他 rooter 时,这会影响吗?

编辑4

这是我的 rooter 配置的屏幕截图,以防出现一些错误定义的配置

在此处输入图片描述

编辑5

从 USB 上测试全新的“试用 Ubuntu 18.04”:

配置似乎与上面的相同,并且:

ip addr | grep mtu
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000  
2: eno1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000  
3: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000  

host -v www.airbnb.com | grep -i received
Received 190 bytes from 127.0.0.53#53 in 54 ms
Received 39 bytes from 127.0.0.53#53 in 432 ms
Received 39 bytes from 127.0.0.53#53 in 1847 ms
host -v www.booking.com | grep -i received
Received 69 bytes from 127.0.0.53#53 in 34 ms
Received 35 bytes from 127.0.0.53#53 in 823 ms
Received 35 bytes from 127.0.0.53#53 in 1039 ms  

似乎存在同样的问题。DNS查找缓慢

答案1

您的问题在于 DSL 连接的 MTU 设置。

Ubuntu 的网络配置中有一个 MTU 设置,而路由器中有一个 WAN MTU 设置。

对于 DSL,常见的 MTU 设置是 1492。请先尝试此值,然后查看您的网站现在是否可以访问。

要确定正确的设置,请从所有 MTU 设置 = 1500 和 VPN = 关闭开始。(VPN 需要不同的测试)。

在终端:

    ping [-c 计数] [-M 执行] [-s 数据包大小] [主机]

使用的选项是:

  • c count:ping 次数
  • M hint:选择路径 MTU 发现策略。可以是do(禁止碎片,即使是本地碎片),want(进行 PMTU 发现,当数据包大小较大时在本地进行碎片),或dont(不设置 DF 标志)。
  • s packet_size:指定要发送的数据字节数。

您应该始终从 1472 开始,然后每次减少 10。一旦收到回复,就增加 1,直到收到碎片数据包。取该值(最后一个好值)并将 28 添加到该值以考虑各种 TCP/IP 标头。例如,假设 1452 是合适的数据包大小(您第一次收到对 ping 的 ICMP 回复)。实际的 MTU 大小将是 1480,这是我们正在使用的网络的最佳值。

    ping -c 4 -M do -s 1472 8.8.8.8 # 这可能会显示碎片

    ping -c 4 -M do -s 1462 8.8.8.8 # 可能会显示碎片

    ping -c 4 -M do -s 1452 8.8.8.8 #没有碎片?

    ping -c 4 -M do -s 1453 8.8.8.8 # 仍然没有碎片?

参考:[如何使用 ICMP ping 确定适当的 MTU 大小][1]

  [1]:http://muzso.hu/2009/05/17/how-to-determine-the-proper-mtu-size-with-icmp-pings

更新#1:

我们需要检查您的 DNS 服务器在 /etc/resolv.conf 中是否存在问题options edns0

/etc/resolv.conf 是一个符号链接,指向以下三个位置之一。请执行以下操作:

ls -al /etc/resolv.conf# 注意原始符号链接设置

sudo cat /etc/resolv.conf# 记下当前文件内容

sudo rm -i /etc/resolv.conf# 删除符号链接


sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf# 新的符号链接

sudo cat /etc/resolv.conf# 记下当前文件内容

使用以下方法重新测试 DNS:

host -v www.booking.com | grep -i received# 每次使用不同的网站

sudo rm -i /etc/resolv.conf# 删除符号链接


根据结果​​,您还可以尝试此符号链接:

sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf# 不同的符号链接

sudo cat /etc/resolv.conf# 记下当前文件内容

使用以下方法重新测试 DNS:

host -v www.booking.com | grep -i received# 每次使用不同的网站

sudo rm -i /etc/resolv.conf# 删除符号链接


如果一个符号链接比另一个更好,请暂时保留它。如果没有更好的效果,请将其设置回原始状态:

sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf# 重置为原始符号链接

相关内容