次の問題について、ヒントやガイダンスを提供できるかどうか疑問に思っていました。
環境タイプ: 小規模オフィス、約 20 ユーザー。ネットワーク: すべてのサーバー、ワークステーションは単一のサブネットに属します インフラストラクチャ: 仮想化された Web サーバーと仮想化されたデータベース サーバー。
現在、Apache 2.2.22 (Win32) および PHP 5.3.10 を実行している Web サーバー (Win7SP1 x64) があります。データベース (SQL2k8 Express) に接続してプロシージャを呼び出すいくつかのページを作成しました。プロシージャは基本的に、結合と条件を使用した基本的な選択ステートメントです。結果セットが返されると、PHP は結果セットを 1 行ずつループし、通過する行を表示します。
時々、結果ページの読み込みに非常に時間がかかり、結果セットが表示されず、Web ブラウザーの読み込みバー/アイコンが点滅することがあります。ロードの最後に空白の画面が表示される場合があります。これは通常、クエリ接続がタイムアウトしたことを意味するか、結果セットが返される場合があります。たとえば、通常の動作では、ページの読み込みに約 1 ~ 3 秒かかりますが、奇妙な場合には最大 20 ~ 30 秒かかる場合があります。
SQLSVR Mgmt Studio でクエリを実行すると、結果セットを返すのに約 5 秒かかるクエリが、Web サーバーにロードするのに約 15 秒かかる場合があることに気付きました。
貧弱な PHP コーディングがスローダウンを引き起こす可能性があることは知っていますが、私のコーディングはそれほど悪くないと確信しているので、奇妙なパフォーマンス動作に少し困惑しています。
そのため、問題を診断または特定する方法についてヒントを提供したり、私が調査できる領域をアドバイスしたりできれば、それは素晴らしいことです。Apache ログ、SQL SVR ログ、およびパフォーマンス インジケータがあることは知っていますが、私はまだこの分野にかなり慣れていないため、取るべきアプローチ/方法論に本当に迷っています。
たとえば、Apache などで有効にする必要がある特定の mod または使用する必要がある Apache サーバーの種類、Web サーバーの接続ソケットなどはありますか?
PHP クエリ/プロシージャ コールの例
$queryStatement = "exec myProc @para1='asd'";
$prepare = $dbConnect->prepare($queryStatement);
$result = $prepare->execute();
WHILE($result = $prepare->fetch(PDO::FETCH_ASSOC)){
set_time_limit(180);
echo $result
}
みんな乾杯:)