我正在建立一个自动完成功能对于我的网站和Google 即时结果是我的基准。
当我查看 Google 时,50-60 毫秒的响应时间让我感到困惑。
它们看上去太疯狂了。相比之下,我的是这样的。
为了让您了解,我的结果缓存在负载均衡器上,并由具有以下功能的机器提供:httpd slowstart 和 initcwnd已修复。我的网站也支持 cloudflare
从服务器端的角度来看,我认为我无法再做任何事情。
有人可以帮我拿这个吗响应时间从 500 毫秒缩短至 60 毫秒?我还应该做什么达到 Google 级别的性能?
编辑:
各位,你们似乎对我与谷歌的比较感到生气,而且这个问题非常笼统。对此我深表歉意。
重新表述:如何将响应时间从 500 毫秒缩短至 60 毫秒假设我的服务器响应时间只有几毫秒。假设结果由 Nginx -> Varnish 提供,缓存命中。
以下是一些我想自己回答的答案,假设响应大小大致保持不变。
- 确保结果是 http 压缩的
- 如果你使用 https,请确保使用 SPDY
- 确保将 initcwnd 设置为 10,并禁用 Linux 机器上的慢启动。
- ETC。
我认为我不会达到 Google 级别的 60 毫秒,但你们的集体专业知识可以帮助轻松缩短 100 毫秒,这是一个巨大的胜利。
答案1
为了实现类似的性能,需要注意以下重要事项:
- 客户端和服务器之间的往返时间。Google 已在全球各地部署服务器,以便始终有一些服务器靠近客户端。
- 所需的网络往返次数。打开 TCP 连接并发送 HTTP 请求至少需要两次往返。HTTPS 需要更多往返。找出使用的往返次数,以及技术上是否可以减少往返次数。如果在请求之间保持连接,则应该可以在一次往返中完成请求。
- 注意请求之间的依赖关系。页面结构是否允许所有资源并行下载,还是按顺序下载?
- 服务器上有足够的 RAM。如果你想要充分利用系统的每一毫秒的性能,你就不能等待磁盘寻道。
- 避免使用线性算法。如果服务器需要使用与数据大小成线性关系的时间才能响应请求,则其性能不太可能很好。如果数据驻留在内存中,则与搜索的数据大小成对数关系的算法应该可以正常工作。
- 注意资源使用情况。是否有任何网络链接饱和,服务器接收请求时网络往返时间是否会增加,是否有某些东西占用了服务器上的额外内存并将数据结构推离 RAM?
答案2
这里提出的问题不是重复的,但非常相似:
https://stackoverflow.com/questions/132359/how-can-google-be-so-fast
它可以帮助您更深入地了解 Google 为取得更好的结果所做的工作。