我正在开发一个分布式应用程序,我目前正在 LAN 上的 Ubuntu VM 集群上运行该应用程序。我想评估我的应用程序在 WAN 上的性能。所以我决定用Netem和tc来增加网络延迟等。。我的问题是我不知道要为延迟、抖动、丢包等设置哪些值,这代表了一个通用的 WAN,用于创建有意义的评估结果,支持我声称应用程序已通过 WAN 进行评估的说法?到目前为止,我还没有找到一个资源表明,将我转发到这样的资源也是非常受欢迎的。非常感谢。
根据这篇文章,我们预计 10,000 公里距离的 ping 至少需要 60 毫秒:
爱尔兰距离加利福尼亚大约 10,000 公里,所以这是我们预期的 ping。
我正在api.kraken.com
从位于加利福尼亚某处的爱尔兰 ping。
我的 ping 怎么这么低 - 4 毫秒?
我正在使用ping
命令提示符中的命令来测试这个:
而且绝对不只是我得到这么低的 ping。这是来自 check-host.net 的报告:
这是服务器的位置,使用iplocation.net:
如果有用,这是一个跟踪路由:
当您创建 ECS 弹性伸缩策略时,会同时标记两个警报:一个用于扩展(“out”),一个用于缩减(“in”)。
我看到创建的横向扩展似乎每分钟对 CPU 利用率(或感兴趣的指标)进行采样,并且仅在三个连续数据点超过阈值时触发自动扩展。
这意味着,如果我看到流量高峰,将在三分钟后发生横向扩展。(事实上,平均而言,阈值突破将发生在采样间隔的中间,因此延迟为三分半钟。)
我可以通过 AWS 控制台 Web 界面调整采样率和所需的数据点数量。
但是,我想通过 Terraform 管理我的基础设施。
我如何使用 Terraform 但没有手动点击来缩短(a)第一次违反阈值之间的时间;(b) 我开始向外扩展的时间点?(另外:这是一个愚蠢的尝试吗?我是否以 awk-basscards 的方式来处理它?)
据我所知,它看起来像滑冰上坡:创建自动缩放策略(我可以通过 Terraform 完成)会自动创建两个警报并将句柄返回给它们(请参阅https://docs.aws.amazon.com/autoscaling/ application/APIReference/API_PutScalingPolicy.html),但 Terraform 不会公开这些句柄(请参阅https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy#attributes-reference)。在 Terraform 中还有可能吗?需要英勇的努力吗?
我正在尝试比较集群的不同节点互连的延迟。目标是最小化内存访问延迟。
我已经获得了一些关于具有许多 CPU 的 NUMA 架构的硬件实现之一的基准测试。这表明:
- 直接连接到 CPU 的 socket 的内存访问延迟约为 90ns。
- 通过UPI连接到CPU套接字的其他CPU套接字的内存访问延迟约为140ns(因此UPI的一“跳”增加了约50ns)。
- 通过所考虑的 NUMA 互连访问内存的延迟为 370ns(因此该互连的一“跳”增加了大约 280ns)。
NUMA 互连是非常专业的解决方案,无法与大多数硬件供应商一起使用。“标准”互连器是 InfiniBand、以太网和 FibreChannel。
我正在寻找这些互连器为内存访问提供的延迟。
例如,在 EDR Infiniband 交换机之一的规范中,它声明它提供“90ns端口到端口延迟”。如果我理解正确,端口到端口延迟是指交换机本身引入的延迟。对于这个延迟,我们应该加上大约 600ns 的 NIC 延迟(根据这个),所以这大约是 90+2x600=1290[ns] 的互连器相关延迟。(顺便说一句,与 90ns 相比,600ns 的值似乎高得可疑。为什么这么高?)
我们还应该预期电缆(无源铜缆或光纤)会引入一些延迟。我想这取决于它的长度,但我不确定它的顺序是什么。光在 3ns 左右传播 1 米,这是一个好的估计吗?
缺少的部分是网卡访问内存的时间。我想我们应该考虑使用 RDMA 和通过 CPU 的不同情况。我还缺少其他东西吗?我的上述推理是否正确?
我的主要问题是:使用 InfiniBand、以太网或 FibreChannel 等“标准”互连器访问集群不同节点内的内存的预期延迟是多少?
我问的原因是我试图将当前单一系统映像解决方案中描述的问题分解为较小的子问题。
我试图了解不同的网络指标,特别是那些与时间有关的指标。我发现自己迷失在定义中。从我到目前为止所做的研究中,我发现定义中存在一些矛盾,具体取决于来源,但这是我确定的(可能是错误的!!):
延迟:数据包从客户端到达目的地所需的时间,或者简单地说是旅行时间。
往返时间 (RTT):请求到达目的地并返回给客户端所需的时间。
响应时间:请求到达目的地得到处理以及处理结果到客户端所需的时间。
所以我的问题是:
- RTT 只是 2 倍延迟吗?
- RTT和响应时间有什么区别?在我看来,它们是同一回事。
- 延迟和 RTT 是如何计算的?相对容易衡量的响应时间如何消除处理时间?
- 最后是上述所有问题的起源。使用 ping 命令时显示的时间是延迟 RTT 还是响应时间?
很抱歉有很多问题,但它们都是相互关联的,所以我觉得我不应该把它们分成多个帖子。
我有一个托管网站和多个 API 的服务器。最近,当我们尝试访问该网站时,在实际加载之前会出现持续几秒钟的延迟。我很怀疑这是由于某些 DNS 设置造成的。有没有办法找出服务器实际使用的 DNS?
我的 /etc/resolv.conf 文件如下所示:
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 212.227.123.16
nameserver 212.227.123.17
我知道前两个来自谷歌,其余来自 ionos,奇怪的是,如果最后两个条目(ionos)不在那个 resolv.conf 上,我们的一个网站似乎会抛出错误。
我之前问过类似的问题,但我相信我不清楚细节。
由于地理距离,我的服务器基本上存在一些与服务器和客户端之间的高延迟有关的问题。并进行了研究,结果证明我可以通过增加 TCP 窗口大小来解决这个问题。
问题是我真的不知道该怎么做,按照我在网上找到的说明根本没有帮助。
所以我希望有人可以分享一些文档/命令/说明或任何可以进一步改善这个问题的东西。
这是一些信息:
- 操作系统:Ubuntu 20.04 (LTS) x64
- 服务器:Apache/2.4.41
- 应用程序类型:Python - Flask
- 托管公司:数字海洋
编辑:在几个回复告诉我调整窗口大小不会解决问题之后,我想我还不够清楚。
在告诉我更改窗口大小不起作用之前,请参阅此答案。 https://networkengineering.stackexchange.com/a/2297/71565
如果您认为我误解了上面链接中的答案,请告诉我我特别出错的地方,不要只分享“它不起作用”等神秘回复。
最终编辑 7/7多个电缆、端口和设备替换已将其范围缩小到 Comcast 调制解调器及其所有 8 个以太网端口。鉴于,正如评论所说,这是一个封闭的设备,不太可能获得太多真实信息,我们可能永远不会发现,但我仍然会发布该决议作为答案。
(编辑 1/6 动机;潜在的实际问题)基于用户对电话会议问题的投诉,我想消除所有可能的原因。在验证了从笔记本电脑到服务器的完美 LAN 和 WiFi 连接,然后看到非常不均匀的端到端 ping 延迟——通常远高于 100 毫秒的建议限制——按照此处的指示,使用 Google Meet 服务器,我回溯到延迟的来源。(当然,这不一定是 Google Meet 延迟的根本原因,但我需要将其排除为可能的原因。)
事实证明,不均匀和高延迟来自 Sophos UTM 9 SG125(固件:9.703-3)与 Comcast CGA4341COM 千兆调制解调器(制造商:Technicolor;硬件版本:2.3;芯片组:Broadcom)之间的直接链接。
链路两端都报告千兆连接。Speedtest 可speedtest.xfinity.com
通过硬连线的局域网服务器提供 400Mbps 范围的结果。(编辑 2/6 问题的附加证据这似乎很好,除了当同一服务器直接连接到调制解调器时,完全切断路由器和 LAN 的其余部分,吞吐量为 930Mbps。)
在 Sophos 上使用 10 英尺 Cat5e 电缆直接连接调制解调器的 SSH cmd 线路上进行长时间测试后:
—— xx.xx.xx.134 ping statistics ---
756 packets transmitted, 756 received, 0% packet loss, time 755277ms
rtt min/avg/max/mdev = 0.162/21.789/199.543/34.605 ms
长长的 ping 非常密集地穿插:
64 bytes from xx.xx.xx.134: icmp_seq=1 ttl=64 time=58.2 ms
64 bytes from xx.xx.xx.134: icmp_seq=2 ttl=64 time=0.645 ms
64 bytes from xx.xx.xx.134: icmp_seq=3 ttl=64 time=72.4 ms
整天尝试这个没有任何改变。调制解调器的所有无关功能都被禁用:端口转发、端口触发、防火墙、MAC 访问控制、dhcp、wifi 等。
(编辑 3/6 回复:可能导致延迟的流量负载)这也发生在半夜,因此与流量无关。当链路利用率低于 1% 时,尽管 ping 可能不准确,但优先级不应该发挥作用。
(编辑 4/6 回复:ICMP 的可能低优先级)traceroute
,使用 UDP,显示相同的延迟模式:
traceroute -q 10 -w 1 10.1.10.1
traceroute to 10.1.10.1 (10.1.10.1), 30 hops max, 40 byte packets using UDP
1 10.1.10.1 (10.1.10.1) 71.784 ms 70.684 ms * * * 66.310 ms * * * *
traceroute -q 10 -w 1 10.1.10.1
traceroute to 10.1.10.1 (10.1.10.1), 30 hops max, 40 byte packets using UDP
1 10.1.10.1 (10.1.10.1) 1.218 ms 1.151 ms * * * * * * * *
traceroute -q 10 -w 1 10.1.10.1
traceroute to 10.1.10.1 (10.1.10.1), 30 hops max, 40 byte packets using UDP
1 10.1.10.1 (10.1.10.1) 61.156 ms * * * * 55.497 ms 54.370 ms * * *
编辑 5/6 回复:此 ISP 和调制解调器的正常行为在不同的客户站点,相同的调制解调器硬件连接到 65 美元的 EdgeRouter X,我从路由器看到,正常:
--- 10.1.10.1 ping statistics ---
60 packets transmitted, 60 received, 0% packet loss, time 59398ms
rtt min/avg/max/mdev = 0.278/1.201/2.175/0.554 ms
同样,在第二个站点发送了 100 个 traceroute UDP 数据包后,最慢的是 3.3 毫秒。
(编辑 6/6 回复:一般情况下可能正常)在任何调制解调器和路由器之间,在与多家供应商合作的低端和高端宽带工作中,我从未见过这种延迟模式。我没有打折 Sophos 方面;当我可以通过直接连接到不同设备的情况下到达现场时,我会报告。
在 Sophos 上,没有数据包错误:
router:/var/log# ifconfig eth1
eth1 Link encap:Ethernet HWaddr 7C:xx:xx:xx:xx:94
inet addr:96.xx.xx.129 Bcast:96.xx.xx.135 Mask:255.255.255.248
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:300119356 errors:0 dropped:0 overruns:0 frame:0
TX packets:243077712 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:264200277517 (251961.0 Mb) TX bytes:197347533783 (188205.2 Mb)
在 eth0 上,Sophos 以典型的 0.1-0.2ms 非常稳定的延迟 ping 局域网上的服务器。
router:/# ping 192.168.1.5
PING 192.168.1.5 (192.168.1.5) 56(84) bytes of data.
64 bytes from 192.168.1.5: icmp_seq=1 ttl=128 time=0.198 ms
64 bytes from 192.168.1.5: icmp_seq=2 ttl=128 time=0.128 ms
Sophos 上根本没有加载(CPU 或内存或磁盘),日志中也没有任何异常,dmesg
. .
lshw
报告:
*-network:1
description: Ethernet interface
product: Ethernet Connection X553 1GbE
vendor: Intel Corporation
physical id: 0.1
bus info: pci@0000:0b:00.1
logical name: eth1
version: 11
serial: 7c:xx:xx:xx:xx:94
size: 1Gbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 33MHz
capabilities: pm msi msix pciexpress bus_master cap_list rom ethernet physical tp 10bt-fd 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=ixgbe driverversion=5.2.4 duplex=full firmware=0x80000878 ip=96.86.73.129 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:17 memory:dfa00000-dfbfffff memory:dfe00000-dfe03fff memory:dc500000-dc57ffff
在搜索 90 天的日志时,调制解调器几乎没有任何报告。只有今天:
FW.WANATTACK DROP , 34 Attempts, 2020/6/16 15:58:01
Firewall Blocked
调制解调器上的详细软件统计信息:
eMTA & DOCSIS Software Version: CM DOCSIS Application - Prod_18.1_d31 & MTA Application - Prod_18.1
Software Image Name: CGA4131COM_3.12p12s1_PROD_sey
Advanced Services: CGA4131COM
Packet Cable: 2.0
我管理一个网络服务,对于我的公司来说,检测并通知是否有任何服务关闭以及它所做的任何操作是否需要太长时间才能响应是非常重要的。到目前为止,有一个单独的 Web 应用程序(包括前端和后端)只是为了每 15 分钟向这些端点请求随机操作,但我发现它很复杂,因为它需要维护一个完整的 Web 应用程序只是为了这个目的,而且我知道许多免费的 Web 服务应该做的工作。
我已经设置了 AWS Healthchecks 来替换轮询 webapp,并且非常适合正常运行时间部分,现在我的问题来自响应时间部分。
所有这些 API 运行状况检查服务似乎都为不太复杂的请求做好了准备,因此,API 应该负责为运行状况检查服务提供“状态”端点,并在“OK”中包含数据库延迟等内容,或者应该是“运行状况检查器” “负责执行复杂请求的人?什么方法更正确?
谢谢!
我有时会为仅在英国境内交易的企业制作网站。如果我只对来自源服务器所在国家/地区的访问者感兴趣,并且该国家/地区相对较小,那么使用 CDN 有什么意义吗?
人们是否只使用 CDN 来从边缘位置减少延迟中受益,还是他们可以做其他有用的事情?平均 CDN 的边缘位置有多分散?