【问题标题】:Apache is lagging or something else is bad阿帕奇落后或其他东西不好
【发布时间】:2010-07-23 00:36:50
【问题描述】:

我有一个网站。这是我第一个使用 Zend Framework 的网站,但我认为它写得很好。现在生成时间约为0.9s。我会做 0.2 之类的东西,但现在离开它。当您按下网站上的任何链接时,网络浏览器加载页面之前大约需要 1,5-2 秒。然后显示它需要0.15s。那么如果执行时间是 0.9,那么其他 1.1 秒在哪里呢? Ping 大约是 13 毫秒。网址是http://zgarnijlicke.pl

编辑:
奇怪的。第二个域http://lottek.eu 运行良好。看看http://lottek.eu/picostreamer。它不像 zgarnijlicke.pl 域那样滞后。

编辑 2:

Zend-Framework 有问题。我在没有渲染视图的情况下设置了操作(也禁用了布局),它的工作速度与服务器一样快。我会为它提出新问题。

【问题讨论】:

  • 如果您使用 Firefox 和 Firebug,那么您可能会对 Google 的“PageSpeed”插件感兴趣,该插件可用于评估网页性能并获得有关如何改进它们的建议。链接:code.google.com/speed/page-speed
  • 我正在使用 Chrome。我将尝试通过安装 FF 或通过按 Ctrl+Shift+J 来在 Chrome 插件中进行构建
  • 尝试 ping 62.75.188.55 。我现在对捷克共和国的 ping 大约是 15 毫秒,通过 TeamViewer 我从波兰下载的 1Mb 测试了它,它是 29-37 毫秒。

标签: php apache zend-framework


【解决方案1】:

这是针对您网站的 pagestest.org 报告:http://www.webpagetest.org/result/100721_1P0Y/

如果您查看第一个视图的瀑布图,您会看到浏览器在大约 1.2 秒标记处获取您的 HTML 源代码,并且在 4 秒后第一次能够呈现您的页面。这两者之间发生的是下载您的三个 javascript 文件和两个 CSS 文件。所以,这就是你想要开始的地方。一些建议:

  • 考虑为 jquery.js 使用免费的 CDN,而不是从您的服务器提供它,例如谷歌的:http://code.google.com/apis/ajaxlibs/。这样一来,用户更有可能已经将其缓存起来,Google 将从地理上更接近用户的位置提供它,并且(我认为)以压缩格式。

  • 对于 jquery.corner.js 和 jquery.media.js,考虑将它们合并到一个文件中并压缩它们(Apache 模块 mod_deflate 使这很容易做到)

  • 您的 CSS 文件也是如此 - 考虑将它们合并到一个文件中并以压缩形式提供。

那些会给你一些快速的胜利。但是,您还可以改进其他方面:

  • 为您的图像标签添加宽度和高度属性。如果没有这些,一些浏览器会在下载图像时停止渲染,以便知道它们将占用多少空间。您的所有图片标签都没有这些属性。

  • 确保为作业使用正确的图像格式。您的 banner.png 图像超过 300k,太大了。我将其转换为 JPEG 图像(80% 质量),大小为 30k。

至于执行时间,0.9 秒似乎相当高。您使用的是 APC 还是类似的?该页面是否在执行繁重的数据库工作?

【讨论】:

  • 它是 Zend 框架。没有 APC。我给图像赋予了维度。现在我无法将图像转换为更小的尺寸,但我在这里下载了 10 Mb,所以对我来说它应该可以正常工作。稍后(在消除“滞后”之后)我将压缩图像并配置您所写的所有内容。
  • 我暂时将 .htaccess 重命名为另一个名称,但这不是 .htaccess 错误。我真的不知道。
【解决方案2】:

尝试在您的 php 中添加一些计时器代码,以测量生成页面内容所需的时间长度。这样您就可以确认或排除服务器问题。

您还可以使用 ping 和 traceroute 等网络工具来查看您的问题是否是由网络延迟引起的。

【讨论】:

  • 再次阅读我的帖子。执行时间是 0.9 秒,但现在显示页面需要 3.2 秒。 Ping 大约是 13ms
【解决方案3】:

此处使用 wget 进行快速测试,传输一个页面的总执行时间为 1.5 秒,实际下载时间为 0.2 秒,因此开销为 1.3 秒。暂停发生在传输开始之前,因此这是服务器端问题。

该站点是否在虚拟服务器上?如果底层物理服务器负载过重,您的图像可能会被换出或 CPU 不足,并且需要大约 1 秒才能再次响应。

也许这是一个内部资源问题 - 您是否连接到数据库,尤其是远程数据库?即使某些或大部分页面不是 DB 驱动的,连接到 DB 的开销也可能导致这种速度变慢。然后再次交换/延迟,因为几乎没有进一步的活动来保持图像处于活动状态。

它甚至可能像 Apache 配置了“IdentityCheck”一样愚蠢,尽管不太可能,因为这会减慢所有请求。从 HTTPFox 查看时,我没有看到您的服务器对 .css/.js 文件的请求有任何减慢。有趣的是,通过 wget 请求 .css/.js 会返回“500 Internal Server Error”。

【讨论】:

  • 我正在缓存并且标题模块被禁用。这就是 500 错误的原因。错误已修复。每个请求(通过 Audit chrome)都有 0.7-1.2 延迟。是VPS。我设置了几个游戏服务器,但它们是空的,当我尝试加入它们时,一切正常。与服务器“对话”的 PHP 脚本在 0.5> 时间内从 MySQL 获取数据。所以这不是数据库错误或滞后。
【解决方案4】:

我找到了。这是 ZF 的问题,因为当我用这样的代码做 hello.php 页面时:

hello world

没有任何 脚本需要 0.4 秒才能完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-15
    • 2011-02-25
    • 1970-01-01
    • 2018-07-09
    • 2015-04-05
    相关资源
    最近更新 更多