我在 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
# 重置为原始符号链接