【问题标题】:Diagnosing slow page 'Waiting time' between two web servers诊断两个 Web 服务器之间的慢速页面“等待时间”
【发布时间】:2012-06-05 17:45:33
【问题描述】:

我们刚刚安装/配置了一个新的网络服务器来替换我们过时的服务器。让我们称旧服务器“server1”+新服务器“server2”。它们都运行相同的网站,使用相同的代码,但旧服务器提供网页的速度仍然比新服务器快得多。首先,这里是有关服务器规格的更多详细信息:

Server1 配置:

Linux server1 2.6.32-25-generic-pae #45-Ubuntu SMP Sat Oct 16 21:01:33 UTC 2010 i686 GNU/Linux

内存总量:6180036 kB

8 核 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz

服务器版本:Apache/2.2.14 (Ubuntu)

Server2 配置:

Linux server2 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

内存总量:24682544 kB

16 核 Intel(R) Xeon(R) CPU E5620 @ 2.40GHz

服务器版本:Apache/2.2.22 (Ubuntu)

主要区别在于 server2 具有 64 位操作系统架构,并且还具有更多的 RAM 和 CPU 能力。

我不了解你,但我希望 server2 能够击败 server1。但是,在提供网页时,情况并非如此。

两个服务器页面加载的开发者工具输出:

等待时间:314ms

等待时间:5.45s

如您所见,两台机器发出完全相同的文件请求,但 server1 仍占主导地位。

我已尝试调查可能会影响“等待时间”的几个因素,但我很难缩小花费时间的范围。 我已经查看了 Apache2 配置,两台机器上都应用了完全相同的指令和模块扩展...对代码进行了比较并验证了它是相同的...网络/ping/nslookup 时间几乎相同。

谁能解释一下“等待时间”的确切计算方式,以及可用于缩小问题范围的任何做法?

非常感谢, ns

【问题讨论】:

    标签: performance optimization webserver developer-tools page-load-time


    【解决方案1】:

    是的,我最终还是找到了它的底部。尽管您的问题的解决方案可能与我的非常不同。 “等待时间”是一个相当宽泛的术语,可以与在服务器端执行的任何操作相关。

    在我的例子中,我不得不以一种相当痛苦的方式手动调试代码,通过在代码周围打印大量 microtime() 语句来找出浪费时间的地方。

    原来有一些遗留代码有一个exec/sbin/route

    在最初的 32 位系统上,这完全可以立即执行,但在 64 位机器上,它需要超过 5 秒:

    $ time /sbin/route
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         10.10.10.1       0.0.0.0         UG    100    0        0 eth0
    
    real    0m5.007s
    user    0m0.000s
    sys     0m0.004s
    

    不确定 /sbin/route 通常是否在 64 位机器上执行较慢(如果是,很高兴知道原因),还是应该归咎于较新的操作系统版本。

    【讨论】:

    • 您知道在 PHP 领域,您可以使用缓存研磨或其他一些分析器来查找瓶颈。不需要微时间。
    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    相关资源
    最近更新 更多