【发布时间】:2014-05-31 18:11:20
【问题描述】:
我正在构建一个自动完成功能并意识到 客户端和服务器之间花费的时间太长(在 450-700 毫秒的范围内)
我的第一站是检查这是否是服务器延迟的结果。
但是正如您所看到的这些Nginx logs are almost always 0.001 milliseconds(请求时间是最后一列)。这几乎不是令人担忧的原因。
所以很明显我在服务器和客户端之间浪费了时间。我的基准是Google Instant's response times。这几乎通常在 30-40 毫秒的范围内。 幅度降低。
尽管说 Google 拥有以这种速度交付的庞大基础设施能力很容易,但我想推动自己了解这对于不具备这种水平的人来说是否可行。如果不是 60 毫秒,我想减少 100-150 毫秒。
以下是我设法学习的一些策略。
- Enable httpd slowstart and initcwnd
- 如果您在 https 上,请确保 SPDY
- 确保结果是 http 压缩的
- 等
我还能在这里做什么?
例如
- 持久连接有帮助吗?
- 我应该显着减小响应大小吗?
编辑: 这是 ping 和 traceroute 编号。该站点通过来自 Fremont Linode 机器的 cloudflare 提供服务。
mymachine-Mac:c name$ ping site.com
PING site.com (160.158.244.92): 56 data bytes
64 bytes from 160.158.244.92: icmp_seq=0 ttl=58 time=95.557 ms
64 bytes from 160.158.244.92: icmp_seq=1 ttl=58 time=103.569 ms
64 bytes from 160.158.244.92: icmp_seq=2 ttl=58 time=95.679 ms
^C
--- site.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 95.557/98.268/103.569/3.748 ms
mymachine-Mac:c name$ traceroute site.com
traceroute: Warning: site.com has multiple addresses; using 160.158.244.92
traceroute to site.com (160.158.244.92), 64 hops max, 52 byte packets
1 192.168.1.1 (192.168.1.1) 2.393 ms 1.159 ms 1.042 ms
2 172.16.70.1 (172.16.70.1) 22.796 ms 64.531 ms 26.093 ms
3 abts-kk-static-ilp-241.11.181.122.airtel.in (122.181.11.241) 28.483 ms 21.450 ms 25.255 ms
4 aes-static-005.99.22.125.airtel.in (125.22.99.5) 30.558 ms 30.448 ms 40.344 ms
5 182.79.245.62 (182.79.245.62) 75.568 ms 101.446 ms 68.659 ms
6 13335.sgw.equinix.com (202.79.197.132) 84.201 ms 65.092 ms 56.111 ms
7 160.158.244.92 (160.158.244.92) 66.352 ms 69.912 ms 81.458 ms
mymachine-Mac:c name$ site.com (160.158.244.92): 56 data bytes
【问题讨论】:
-
从您显示的客户端到服务器的 ping 时间是多少?跟踪路由中有多少跳?您是否在本地网络或单台机器上尝试过此操作(使用
localhost?)如果您要在网络上进行边缘到边缘(其中一个边缘是您的客户端,另一个边缘是低成本网络中的机器托管场)您可能已经达到了延迟限制。 -
@OllieJones 我已经添加了 ping 和 traceroute 详细信息
-
啊哈,它是通过 cloudflare 提供的。您的 ping 时间是到最近的 cloudflare 服务器。因此,您的动态菜单查询从您的客户端传输到附近的 cloudflare 节点,然后通过 cloudflare - 到 - 客户中继到您的服务器。您在延迟中携带 cloudflare 延迟。如果您要理性地解决这个问题,您应该关闭 cloudflare 以消除查询组合中的延迟。如果您想通过它们提供这些查询,我怀疑您的未来将会有高级 cloudflare 订阅。 (这是洲际的吗?如果是的话会很慢。)
-
我试过直接绕过 cloudflare 到机器上。差别不大。 @OllieJones
-
我可以有服务器 URL 来检查这里的时间和页面加载顺序吗?
标签: performance networking browser nginx