1

私が作ったブログがあります。最近、いくつかのパフォーマンスの問題に気付いています。インデックス ページの待機時間は約 400 ミリ秒です。これはかなり高いと思います。最初に展開したとき (機能は少ないですが)、インデックスの読み込み時間が 80 ミリ秒程度だったことを思い出します。

ここでプロファイルを作成しますが、問題は、これが私の運用環境でのみ発生することです。私のテスト環境では、インデックス ページは 10 ミリ秒しかかかりません。

本番アプリケーションのプロファイリングを行うにはどうすればよいですか? Arch Linux と MongoDB で Apache+mono+mod_mono を使用しています。xsp を使用する以外は、同様のテスト環境があります。

自分のコード、Apache の構成、または MongoDB のどこを見ればよいかわかりません。運用サーバーのプロファイルを作成して、開発環境よりもはるかに遅い理由を突き止めるにはどうすればよいですか?

4

2 に答える 2

1

詳細なしで特定するのは難しいですが、一般的なガイドのショットを次に示します。

最初に、Firefox 用のFirebugのようなものを使用することをお勧めします。他のブラウザーにも同等のものがありますが、これは、この種のことを行うための私の古い頼りになるツールです。それを有効にすると、ページにロードされているすべてのオブジェクトのリストを表示するウォーターフォール ダイアグラムのネット パネル ビューが表示されます (更新が必要になる場合があります)。また、レンダリング イベントを示す青色も表示されます (ページが見える)。

ウォーターフォールは、ページの遅い部分がどこにあるかを明確にし、その情報を利用して次の段階に進むことができるようにする必要があります。つまり、特定の部分が遅い理由を突き止めます。

プラグインが気に入らない場合、または問題の原因がマシンのローカルにある可能性があると思われる場合は、http ://www.webpagetest.org/ をご覧ください。

これにより、さまざまな場所、さまざまなブラウザー、速度などからリモート テストを行うことができ、同様の詳細な結果が得られます。

フェッチされているのが静的ファイルである場合は、ネットワークの問題を調べてください。Apache が原因です。動的に生成される場合は、Apache、ASP、mongodb などを調べてください。

Apache の場合、インデックス ページの応答時間はアクセス ログでどのくらいですか? Apache 2 以降を想定している場合は、必要な詳細レベルで (Apache の観点から) ページを提供するのにかかった時間を確認できるように、(必要に応じて) ログに記録されていることを確認してください%D%T詳細については、LogFormat ディレクティブを参照してください。

ASP/Mono 側ではどうしようもありませんが、さまざまなポイントでデバッグ ステートメントを追加してインデックス ページの生成を追跡することは (動的に生成されると仮定して)、かなり標準的な方法です。

データベースの場合、MongoDB はデフォルトで、100 ミリ秒を超える「遅い」クエリのみをログに記録します。ログを介して 100 ミリ秒未満の応答時間の問題を追跡しようとしている場合は、それを調整する必要があります。これは次のように行うことができます。

> db.setProfilingLevel(0,20) // leave profiling off, slow threshold=20ms

mongod プロセスへの起動パラメーター (--slowms) として調整することもできます。プロファイリングの詳細については、こちらも役立つ可能性がありますが、オーバーヘッドがあります。

http://www.mongodb.org/display/DOCS/Database+Profiler

于 2012-07-11T08:14:16.463 に答える
0

Sam Saffrons Mini Profilerをご覧になることをお勧めします。サイトで使用すると、本番環境でプロファイリングを有効にすることができます。

コードに十分なインストルメンテーションを追加することで、どのビットに時間がかかっているかを特定し、そこに注力できるようになります。

于 2012-07-11T08:09:31.260 に答える