我正在开发一个
PHP-MySQL Web应用程序,用于服务器负载测试的可用工具很麻烦且令人困惑.所以我想我会尝试这个,我想知道这是不是一个坏主意:
>将页面生成时间和memory_get_usage()添加到每个页面的输出
>使用jQuery,AJAX和setInterval每秒点击页面n次,记录时间/内存消耗.
function roundNumber(num, dec) {
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
$(function(){
totalCount = 0;
i = 1;
totalTime = 0;
highest = 0;
memoryUsage = 0;
var hitsPerSecond = 1000;
var totalLimit = 100;
function testLoad(){
if (totalCount <= totalLimit){
$.get('/lp/user-page.php', function(data){
$(data).filter('#page-generation-time').each(function(){
totalTime += parseFloat($(this).text());
$('.console').append('
('+i+') - Load time: '+$(this).text()+'
');i++;
if (highest < $(this).text()){
highest = $(this).text();
}
$('.average').html('Average: '+roundNumber(totalTime/i, 5)+' - Highest: '+highest);
});
$(data).filter('#page-memory-usage').each(function(){
memoryUsage = parseFloat($(this).text());
$('.memory').html($(this).text());
});
});
} else {
clearInterval(testLoadInterval);
}
totalCount++;
};
var testLoadInterval = setInterval(function(){ testLoad(); }, 1000/hitsPerSecond);
});
Load Test
这是一种非常愚蠢/不准确的负载测试方法吗?因为它似乎有它的优点:
>重量轻,易于实施.
>使用真实的浏览器加载整个页面.
>跟踪平均页面加载时间并在浏览器中记录结果.
但我真的没有任何参考框架来知道我得到的数字是否正确.感谢任何能告诉我我是否完全错误的人,以及是否有比jMeter更友好的用户.
UPDATE
不要将其用作服务器负载测试的方法.它不会给你一个准确的阅读.
使用上面的代码,我能够以“1,000”加载到服务器一秒钟,几乎没有问题.在尝试使用ApacheBench之后,我发现这绝不是对现实的反映.
使用ApacheBench,我能够通过使用40(!)并发连接点击应用程序来破坏服务器.
显然,我正在重写应用程序的一部分,以便在任何可能的地方使用缓存的HTML.
所以,回答我自己的问题,是的,这是进行服务器测试的一种不好的方法.