7

最近、訪問者ログにPHPの実行時間を追加して、コードまたはデータベースで発生する可能性のある問題を特定しました。時間は、スクリプトの開始と終了の間のmicrotime()の差として測定されます。

平均実行時間(サイトのデバッグバージョンでの私自身のテストを含む)は2〜15ミリ秒です。次に、一部のユーザーに対して+300msの実行がランダムに表示されます。これらは、負荷の急増、キャッシュされていないデータベースクエリ、またはファイルシステムアクセスが原因である可能性があります。

私が理解できないのは、実行時間が5〜30秒(!)のユーザーが表示されることです。私のテストによると、これらは一見ランダムなページに表示され、そのときのアクセスログにリクエストの急増はなく、コードやデータベースのクエリにこのパフォーマンスの低下を引き起こす可能性のあるものはありません。これらのリクエストの90%は中国からのものであり、ある種のクローラーまたはボットのようです。

だから:レイテンシーはPHPスクリプトの実行時間に影響を与える可能性がありますか?前のバッファがユーザーに送信されている間、PHPの実行は停止されますか?

私はこの他のスレッドを一見似たような問題で見つけましたが、答えはありませんでした:PHPの実行時間はインターネット/接続の待ち時間に基づいて変化しますか?

編集:
PHPのoutput_bufferingを4kバイトから128kバイトに増やすことになりました。これで、通常の実行時間は2〜6ミリ秒に短縮され、途方もなく長いタイミングがランダムに発生することはなくなりました。

4

1 に答える 1

1

サーバーの構成、特にoutput_bufferingとimplicit_flushによっては、レイテンシーがPHPの実行時間に影響を与える可能性があると思います。

gethostsbyaddrまた、 PHPスクリプトの速度を低下させる可能性のあるそのような関数がいくつかあります。

XDebugを使用して実行トレースを生成し、スクリプトの実行の「タイムライン」を確認できるかもしれません。

于 2012-11-20T11:22:18.263 に答える