诊断两个Web服务器之间的慢页“等待时间”

时间:2012-05-31 12:57:54

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

我们刚刚安装/配置了一个新的Web服务器来替换我们过时的服务器。让我们调用旧服务器'server1'+新服务器'server2'。他们都运行相同的网站,使用相同的代码,但旧服务器仍然比新的服务器更快地提供网页。首先,这里有一些关于服务器规范的更多细节:

Server1 config:

  

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

     

MemTotal: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

     

MemTotal:24682544 kB

     

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

     

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

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

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

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

Server1 等待时间:314ms

Server2 等待时间:5.45秒

正如您所看到的,完全相同的文件请求来自两台机器,但server1仍然占主导地位。

我曾尝试研究可能影响“等待时间”的几个因素,但我在缩短花费时间的方面遇到了很多困难。 我查看了Apache2配置,在两台机器上应用完全相同的指令和模块扩展...对代码进行差异化并验证它是相同的...网络/ ping / nslookup时间几乎相同。

任何人都可以解释究竟如何计算“等待时间”,以及可以用来缩小问题范围的任何做法吗?

非常感谢, 的 NS

1 个答案:

答案 0 :(得分: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位计算机上执行得更慢(如果是这样,知道原因会很好),或者是否只是应该责备的新操作系统版本。