5

更新 1:

サーバーで strace を実行した後、mmap のプロセスがこの処理時間の 90% を占めていることがわかりました。ページの 1 つが読み込みに 1 分かかっていることがわかりました。

だから私はこのリンクを見つけました: PHPスクリプトはmmap/munmapを実行し続けます

おそらく同じ問題を示しています。しかし、phpエラーハンドラーを正しく無効にすることで、答えが何を意味するのかわかりませんか?

元の質問:

サーバーによって提供されている特定の Web ページをロードするときに、Web サーバーのボトルネックを確認するにはどうすればよいですか?

何らかの理由で、私のサイトのいくつかのページが非常に遅くなり、どこで遅くなっているのかわかりません。

Chrome Dev Tools のスクリーンショット:

ここをクリックして拡大します : ここに画像の説明を入力

基本的に、このセクションの読み込みに時間がかかっている原因を突き止める必要があります。クライアント側の Web ツールはこれを分解できないように見えますか?

4

5 に答える 5

3

Xdebug: PHP スクリプトのプロファイリング- KCacheGrind ツールに注意するか、高度な PHP デバッガーapd_set_pprof_trace() 関数と pprofp を使用して、生成されたデータ ファイルを処理します。

于 2012-07-11T10:55:09.990 に答える
1

Xdebugプロファイリングを調べることをお勧めします。他の2つの回答はクライアント側の読み込みの問題を扱っていますが、ボトルネックがサーバー側の場合、これらのツールを使用しても明らかになりません。

問題のページを提供するために実行されているデータベースクエリを調べることもできます。データベーステーブルのサイズが大きくなるにつれて、特定のページの最近の速度低下を説明するインデックスがどこかにない可能性があります。

これらのクエリを抽出し、MySQL EXPLAINを使用して実行し(MySQLを使用していると仮定)、そこに速度が遅いかどうかを確認します。

于 2012-07-11T10:47:07.553 に答える
1

Derick Rethans (Xdebug の作成者) は今日、What is PHP doing?という非常に素晴らしい記事をリリースしました。

既に行った strace をカバーしますが、カスタム.gdbinitを使用して問題の原因となっている実際の php 関数名を取得する方法も示します。

もちろん、gdb を使用してコマンド ラインからスクリプトを実行する必要があるため、この方法で問題が再現できることを願っています。

mmapは、ファイルのメモリ マップ ビューを作成するためのものです。

それが本当にエラーハンドラーが原因である場合、スクリプトが多くのエラー(ログに記録しようとしている)を生成していると思います。おそらく、ループ内の未定義のインデックスの通知などです)。

ログ ファイルを確認し (何かがログに記録されていますか?)、何もログに記録されていない場合はログ ファイルのアクセス許可を確認し、エラー レポート レベルが何に設定されているかを再確認します。

var_dump(ini_get('error_reporting') & E_NOTICE);- 通知を報告している場合はゼロ以外。

error_reporting(E_ALL & ~E_NOTICE);- レポート通知をオフにします。

于 2012-07-13T16:17:47.060 に答える
0

Fiddler や YSlow Firefox アドインなどのアプリケーションを使用すると、Web サイト内の読み込みが遅い要素を特定するのに役立ちます。これにより、問題が明らかになるはずです。

http://fiddler2.com/fiddler2/

https://addons.mozilla.org/en-US/firefox/addon/yslow/

お役に立てれば

于 2012-07-10T11:17:16.743 に答える
0

Chrome のページ速度もオプションです。

https://developers.google.com/speed/docs/insights/using_chrome

于 2012-07-10T13:02:48.400 に答える