【问题标题】:Reduce Initial Connection & TTFB Time减少初始连接和 TTFB 时间
【发布时间】:2013-01-25 07:05:44
【问题描述】:

类似问题:Here

网址:Cleanfiles PPD Network

Raw Server Link (Skip DNS): http://173.247.246.58/

瀑布视图(网页测试):

我最近搬到了新服务器。 所有 PHP 脚本和资源保持不变。新服务器是Inmotion Elite Dedicated Server

平均服务器负载:

Server load 1.25 (8 CPUs)   
Memory Used 14.14% (1,137,916 of 8,048,804) 
Swap Used   0% (0 of 4,095,992)

作为网络所有者,拥有一个快速而漂亮的网站是重中之重。在浏览整个页面时,我不能让我的成员有 2-4 秒的随机等待时间。旧服务器从来没有这样做过,它加载正常。

由于服务器负载似乎很好并且 PHP 脚本是相同的,我想假设它具有一些 Apache 设置或类似的东西。我真的说不出来。我尝试运行上面发布的问题的最佳答案中列出的两个脚本,但两者都有很长的等待时间......

我与托管公司进行了交谈,但他们并不真正知道发生了什么。对于这个问题或我能做的测试的任何帮助将不胜感激:)

【问题讨论】:

  • “初始连接”表示等待服务器接受连接 - 延迟的典型原因是服务器达到最大客户端限制(apache 配置)并等待现有请求完成能够处理当前的请求。如果该瀑布在几秒钟内出现,很明显大部分内容都是通过 PHP 提供的——这将大大增加达到最大客户端限制的可能性。如果是这种情况,显而易见的第一步是静态地提供静态文件。显示 apache 配置并检查 apache 日志将确认发生了什么。
  • 顺便说一下,我看到问题中的域现在有非常不同的结果,所以其他人没有必要猜测原因是什么。将您确定的内容、更改方式和更改内容发布为已接受的答案会很有用。

标签: php mysql apache


【解决方案1】:

可能最有效的解决方案是使用具有原生 HTML 缓存功能(静态和动态)的 CDN。 TTFB 依赖于您在源服务器上快速处理 HTML 的能力,您可以通过提供来自 CDN 的新缓存副本来完全跳过处理时间。

我最近写了一篇关于它的帖子,其中研究了 TTFB 延迟因素和不同资源的平均加载时间(基于跨 1B 会话收集的数据)。您可能会发现它很有用:http://www.incapsula.com/the-incapsula-blog/item/809-using-cdn-to-improve-seo-and-ttfb

【讨论】:

  • 如果这回答了这个问题,它只是间接地这样做;虽然使用 cdn 几乎肯定会产生(积极的)效果,但它主要是通过防止对静态文件的请求占用 apache,从而导致问题中指出的动态内容延迟。
  • 嗯,这正是我在帖子中所说的。基本上,使用简单的 CDN,你可能会失去比获得更多的东西(松散地取决于动态/静态比率)但是,我还描述了一种允许缓存动态文件的行为学习技术,其中 90% 的 HTML 内容来自 CDN, TTFB 得到了显着改善。
  • 我认为您没有理解我的评论。您是否介意引用您的帖子中解决以下情况的任何部分:网络服务器设置为最多并行处理 2 个请求 - 并行接收的第三个请求必须等待前两个请求之一完成,然后它才会开始被处理?如问题所示,这种情况通常会导致响应时间过长(也适用于静态文件)。请注意,我没有在任何地方提及“cdn”,因为它可能是解决方案的一部分,但不是问题的一部分(或“为什么”的答案)。
  • 对不起,我不同意。即使在这种特定情况下,您最好使用有助于并行处理的 CDN。是的,所有 3 个请求都可能到达一个不可缓存的对象,从而使 CDN 无关紧要。但是,从统计上讲,如果您有 40%-50% 的静态内容(典型用例)并通过智能缓存 huristics(另一个典型用例)缓存另外 20%-25%,那么您只会提高获得更好并行处理的机会,只需通过拆分负载 a.) 在 CDN 和来源之间 b.) 在多个 CDN 位置之间。
猜你喜欢
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多