我们使用ZendFrameWork v1.10开发了一个电子商务网站。有时站点加载非常缓慢,许多页面根本没有加载并且超时。主页加载时间超过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
他们还建议我们检查我们的服务器error_log,因为他们发现很多php错误正在加载它。当我们检查服务器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文件eg : 66.249.76.16
中检查了某些IP的上述错误,我发现了6个结果,如果我检查了IP剥离它的最后两位数(66.249.76)
我可以看到超过20个我们的error_log文件中的每天错误如上所述。
我认为,我应该解决的第一个问题是上面的“请求超出了由于可能的配置错误导致的10个内部重定向的限制。如果需要,使用'LimitInternalRecursion'来增加限制。使用'LogLevel debug'来获得回溯“Apache日志问题。
我们已经完成了日志,如上所述它每天都会发生,因此我需要找出实际导致此错误的代码。我们要求我们的服务器支持启用“Loglevel调试”(我对此不太熟悉),但在启用此功能后,我仍然看不到任何有用或错误日志的任何差异。
我的问题是 - 我该怎么做才能找到我们网站中的错误产生的位置?知道哪个PHP脚本(我们有100个)实际上使这个“请求超过了10个内部重定向的限制”重定向将会非常有用。
有关我如何进行的任何建议?
答案 0 :(得分: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);