3

古いWebサーバーを置き換えるために、新しいWebサーバーをインストール/構成しました。古いサーバーを「server1」+新しいサーバーを「server2」と呼びましょう。どちらも同じコードで同じWebサイトを実行していますが、古いサーバーは新しいサーバーよりもはるかに高速にWebページを提供しています。まず、サーバーの仕様について詳しく説明します。

Server1構成:

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ビットのOSアーキテクチャがあり、RAMとCPUの能力もはるかに高いことです。

あなたのことはわかりませんが、server2がserver1の靴下を吹き飛ばすことを期待しています。ただし、これはWebページの提供に関しては当てはまりません。

両方のサーバーのページロードに対する開発ツールの出力:

Server1 待機時間:314ms

Server2 待機時間:5.45秒

ご覧のとおり、まったく同じファイル要求が両方のマシンから行われていますが、server1が依然として支配的です。

「待ち時間」に影響を与える可能性のあるいくつかの要因を調べてみましたが、時間を費やしている場所を絞り込むのに非常に苦労しています。Apache2の構成を調べたところ、まったく同じディレクティブとモジュール拡張が両方のマシンに適用されています...コードを比較して同一であることを確認しました...ネットワーク/ ping/nslookupの時間はほとんど同じです。

「待機時間」の計算方法と、問題を絞り込むために使用できる方法を正確に説明できる人はいますか?

どうもありがとう、 ns

4

1 に答える 1

1

はい、私は最終的にそれの底に到達しました。あなたの問題の解決策は私のものとは非常に異なる可能性がありますが。「待機時間」は非常に広い用語であり、サーバー側で実行されるすべてのものに関連する可能性があります。

microtime()私の場合、コードの周りに大量のステートメントを出力して、時間が失われた場所を特定することにより、かなり面倒な方法でコードを手動でデバッグする必要がありました。

exectoを持っているいくつかのレガシーコードがあることが判明しました/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ビットマシンで一般的に実行速度が遅いかどうか(もしそうなら、理由を知っておくとよいでしょう)、またはそれが原因となったのは新しいOSバージョンだけであったかどうかはわかりません。

于 2012-07-09T14:00:23.557 に答える