【问题标题】:Causes of high network latency网络延迟高的原因
【发布时间】:2011-05-09 21:41:36
【问题描述】:

我有一个网站现在运行速度非常缓慢。 Safari 的检查器和 Firebug 都报告说大部分加载时间是由于延迟造成的。实际下载不到一秒钟。有很多数据库活动在起作用(尽管上面的指标表明它非常健康),但还有什么会导致真正的高延迟?它是纯粹的网络问题还是我可以对应用程序进行更改以改善延迟数字?

我正在使用 YSlow 来帮助确定性能改进,但总的来说,我没有看到它报告任何看似疯狂不合理的事情。当然有改进的机会,但似乎没有什么会导致我看到的巨大加载时间。

谢谢。

更新

一些背景和指标,以防万一。这是一个 CakePHP 应用程序,我使用我的 UsersController::login 操作作为基准。为了确定应用程序代码在其中发挥了多大作用,我在输入UsersController::beforeFilter() 后立即打印了一个堆栈跟踪。这是输出:

UsersController::beforeFilter() - APP/controllers/users_controller.php, line 13
Controller::startupProcess() - CORE/cake/libs/controller/controller.php, line 522
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 187
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 171
[main] - APP/webroot/index.php, line 83

加载时间,如 Safari 的检查器所示,范围从 11.2 秒52.2 秒。这似乎让我远离了应用程序代码,也许是我的主机,但也许我完全误解了这一点或过于简单化了?

【问题讨论】:

  • 一些数字,或许还有一个 Firebug 屏幕截图可以帮助我们确定这种延迟的原因。
  • 以上更新中添加的其他信息和加载时间范围。

标签: performance cakephp-1.3 latency


【解决方案1】:

如果您无法直接识别应用程序中移动缓慢的组件,那么沿途还有许多其他步骤肯定会减慢您的网站速度。每当我遇到异常长的轮询时,我通常会先查看本地 DNS,然后再查看托管的 DNS。有时,缓存刷新(在他们方面,而不是您的方面)可能会导致大量轮询,直到他们的数据库赶上。

否则,他们实际上可能发生了服务中断,并且您的请求正在发送到他们的辅助或备用服务器。如果在域解析方面一切正常,则您的托管服务提供商可能会遇到服务中断,这种服务中断可能会采取多种不同的形式,例如从备份中提供静态内容或过度分配共享资源,直到一切正常运行。当他们有一个盒子出现故障时,您可以在共享云架构上体验到他们称之为throttling 的大量内容。从好的方面来说,在这种情况下您不会完全中断。

有一次,这只是在共享网格配置中,我有一个处理器去地狱。奇怪的是,静态内容仍然从备份中提供,但它仍在轮询我们的数据库(位于不同的服务器上)并导致我们的帐户为throttle,因为备份分配过多。不是我们的错,但主持人开始发送关于我们过度长投票的讨厌的电子邮件。故事的寓意是,如果不是您的应用程序,而且它出乎意料,那么我敢打赌您会发现一些硬件故障或配置错误。

现在我想起来了,如果您正在联合一些外部内容(无论是服务器端还是浏览器端),它可能完全不在您的责任链中。例如,如果您从订户服务投放广告,则它们可能处于高负载期或中断。这些只是我将采取的步骤来缩小罪魁祸首。

【讨论】:

    【解决方案2】:

    这可能不是你的解决方案,但是当我有小狗慢速 safari(还有 FF)时,我只是将 DNS 服务器更改为 opendns(208.67.222.222、208.67.220.220),我的所有问题都得到了解决。

    【讨论】:

    • 这似乎不是 DNS 问题。我不是唯一一个看到它的人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2017-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多