私はに基づいてLinode 1024 VPSにウェブサーバーを持っています
WordPress 3.3.1に基づいたブログがいくつかあります。3.3.1。それらの1つは、サーバーをテストするためのデフォルトの設定、テーマ、および「Hello World」投稿のみのプレーンなブログです。もう1つは、他のサーバーからクローンを作成したブログで、投稿数は1万近く、コメント数は1万を超えています。
サーバーは テストブログ のabテストで適切な数値を示していますが、クローンされたブログで同じテストを実行することは不可能です。abテストはサーバーに負荷をかけすぎているため、プロセスを停止する必要があります、とにかくabを表示する これは本当に悪い結果です 。
Htopは、 通常の操作 のときの「通常の」負荷も示しますが、abテスト中は 通常の大きな負荷 です。
別の奇妙なことが起こっています(私にとって最も重要です):最初のバイトまでの時間が非常に長いですが、その後、サイトの読み込みが非常に速くなります。これは、tools.pingdom.comなどのサービスで簡単にテストできます これにより、この結果が得られます 。 「待ち時間」を意味する黄色の領域に注意してください。
なぜこうなった?考えられるアイデア:
誰かがもっと情報が必要な場合に備えて、
まず、これは答えではなく、診断アプローチです。
これは決して包括的なものではありません。または、それに近いものでさえ、単なる開始点です。
最初のバイトまでの時間
最初のバイトまでの時間(TTFB)にはいくつかの要素があります。
ApacheBenchの出力を見ると、次も表示されます。
コンポーネントを排除するための比較
いくつかの例外はありますが、問題はバックエンドの処理にあります。バックエンドの処理は、通常、過度に複雑で非効率的なコード、またはMySQLの設定が不適切であることが原因です。
この問題に取り組むための良い方法は、セットアップのさまざまな側面を排除する一連の比較を通じてです。優れた比較では、問題を絞り込むためにできるだけ一定に保つ必要があります。現在、次の比較を提供しています。
理想的なテストでは、サイト全体を複製し、1つの記事と関連するコメントを除くすべてのコンテンツを削除します。このテストのポイントは、大量のコンテンツが問題であるかどうか、またはセットアップの他の側面(WordPressプラグイン、テーマなど)が原因であるかどうかを決定的に判断することです。基本的に、同じ(新しい)サーバー上の同一サイトのパフォーマンスを比較します-同じページ(同じ長さなど)をロードします-唯一の違いはサイトのコンテンツ全体です(たとえば、一部のプラグインはそうでない可能性が高いです)コンテンツの増加に合わせて適切にスケーリングします)。
何も変更せずに、実行できる他の比較がいくつかあります。
バックエンドのチューニング
この時点で、問題を発見したか、バックエンドにあると結論付けているはずです。 Nginx、PHP、またはMySQLが残ります。
(ここで言及する必要があります。つまり、ボトルネックがCPU、RAM、I/Oのどれであるかを知るのは常に便利です-sar
、top
、iostat
、vmstat
、free
などで、これについて何らかの結論を出すことができるはずです。)
Nginx
Nginxはリクエストを受け取り、静的コンテンツを提供するか、リクエストをPHP-FPMにシフトします。通常、Nginxで最適化することはあまりありません。
理想的には、テストブログと複製されたブログの構成が同じである場合、問題としてNginxを効果的に排除できます。
アプリケーション
コードの問題(たとえば、遅いプラグインなど)を特定しようとしている場合は、遅いログから開始します。
MySQL
[〜#〜] php [〜#〜]
PHP-FPM
Htopの結果にphp-fpmがCPUの大部分を消費していることが示されていることは注目に値します。問題はこれに直接関連しているようです。
キャッシング
可能性のあるボトルネックをそれぞれ最適化したら、キャッシュを開始します。
アプリケーションとハードウェアの制限を考えると、バックエンドの使用を最小限に抑えるために、バックエンドのパフォーマンスをそれほど向上させることができない場合があります(ただし、それがキャッシュの目的です)。
さらに読む