0

ZendFrameWorkv1.10で開発されたeコマースサイトがあります。サイトの読み込みが非常に遅く、多くのページがまったく読み込まれておらず、タイムアウトしている場合があります。ホームページの読み込みには15秒以上かかり、多くの商品ページはまったく読み込まれず、単にタイムアウトします。

多くの場合、この場合、Apacheサーバーとサイトを通常どおりに再起動します。次に、サーバーの状態が良好であるとサーバープロバイダーに問い合わせたところ、サーバーの状態は次のようになりました。

(~) # uptime
 12:00:17 up 655 days, 10:51,  2 users,  load average: 0.87, 0.65, 0.58

(~) # uptime
 12:00:29 up 177 days,  6:46,  1 user,  load average: 0.64, 0.53, 0.47

また、多くのphpエラーがロードされていることがわかったため、サーバーのerror_logを確認するようにアドバイスされました。サーバーerro_logとその古いファイルをチェックするとき。すべてのログファイルで次のエラーの多くが見つかりました。

[Sun Dec 30 02:35:32 2012] [error] [client 66.249.76.16] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

error_logファイルで特定のIPについて上記のエラーを確認した場合、eg : 66.249.76.166つの結果が見つかりました。また、IPから最後の2桁を(66.249.76)削除した場合、上記のようにerror_logファイルで1日あたり20を超えるエラーを確認できます。

私が解決すべき最初の問題は、上記の「構成エラーの可能性があるため、リクエストが10の内部リダイレクトの制限を超えました。必要に応じて「LimitInternalRecursion」を使用して制限を増やします。「LogLeveldebug」を使用してバックトレースを取得します」Apacheログ問題。

私たちはログを調べましたが、上記のように毎日発生するので、実際にこのバグを引き起こしているコードを見つける必要があります。サーバーサポートに「ログレベルのデバッグ」を有効にするように依頼しましたが(これについてはあまり詳しくありません)、これを有効にしても、エラーログに有用なものや違いは見られません。

私の質問は-私たちのサイトのどこでこのエラーが発生しているのかを知るために何ができますか?どのPHPスクリプト(100があります)が実際にこの「リクエストが10の内部リダイレクトの制限を超えました」リダイレクトを発生させているかを知ることは非常に役立ちます。

どのように進めることができるかについての推奨事項はありますか?

4

1 に答える 1

1

このような問題もありました。index.phpにログを作成しました。これにより、どのリクエストが問題を引き起こしているのかがわかります。同じことを実装して、どのリクエストが最も実行時間を取っているかを確認できます。

<?php

define('EXECUTION_START',  microtime(true));

.
.
.
// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH .DS. 'configs'.DS.'application.ini'
);
$application->bootstrap()
            ->run();

$endTime = microtime(true);
$executionTime = $endTime-EXECUTION_START;
$ipaddress = $_SERVER['REMOTE_ADDR'];
$url = $_SERVER['REQUEST_URI'];

$logString="$ipaddress|$url|$startTime|$endTime|$executionTime\n";
$file = 'executiontime.txt';
file_put_contents($file, $logString, FILE_APPEND | LOCK_EX);
于 2013-01-09T08:04:07.680 に答える