php – 这是一个做服务器负载测试的坏方法吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 这是一个做服务器负载测试的坏方法吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3374字,纯文字阅读大概需要5分钟。
内容图文
![php – 这是一个做服务器负载测试的坏方法吗?](/upload/InfoBanner/zyjiaocheng/826/103b4e0c301241a68dbfe5ff3809fc13.jpg)
我正在开发一个PHP-MySQL Web应用程序,用于服务器负载测试的可用工具很麻烦且令人困惑.所以我想我会尝试这个,我想知道这是不是一个坏主意:
>将页面生成时间和memory_get_usage()添加到每个页面的输出
>使用jQuery,AJAX和setInterval每秒点击页面n次,记录时间/内存消耗.
这是Javascript和标记:
<script>
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('<p>('+i+') - Load time: '+$(this).text()+'</p>');
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);
});
</script>
<h2>Load Test</h2>
<div class="average"></div>
<div class="memory"></div>
<div class="console-container">
<div class="console"></div>
</div>
这是一种非常愚蠢/不准确的负载测试方法吗?因为它似乎有它的优点:
>重量轻,易于实施.
>使用真实的浏览器加载整个页面.
>跟踪平均页面加载时间并在浏览器中记录结果.
但我真的没有任何参考框架来知道我得到的数字是否正确.感谢任何能告诉我我是否完全错误的人,以及是否有比jMeter更友好的用户.
UPDATE
不要将其用作服务器负载测试的方法.它不会给你一个准确的阅读.
使用上面的代码,我能够以“1,000”加载到服务器一秒钟,几乎没有问题.在尝试使用ApacheBench之后,我发现这绝不是对现实的反映.
使用ApacheBench,我能够通过使用40(!)并发连接点击应用程序来破坏服务器.
显然,我正在重写应用程序的一部分,以便在任何可能的地方使用缓存的HTML.
所以,回答我自己的问题,是的,这是进行服务器测试的一种不好的方法.
解决方法:
这不是最糟糕的想法,但是在评论中提到它有一些问题.
你肯定会遇到的一个问题是缓存.只需确保在您使用的任何浏览器中关闭缓存.注意:我在关闭Chrome缓存时遇到了一些问题,Chrome仍然坚持提供缓存内容,因此请注意这一点.
除了缓存之外,这不是最准确的做事方式.尽管它确实模拟了真正的浏览器加载,但它只模拟一个连接.这基本上模拟了一个用户刷新该单页的次数,不是很准确.
对于并发连接,我肯定会使用apache替换它.就像是
ab -n 1000 -c 10 http://www.your_url.com/
根据您的服务器更改这些数字.该示例将一次运行1000个请求10.
如果你想从你的javascript基准测试中检查数字的“准确性”,你可以做的一件事是运行apache bench并获得一些基线的无浏览器数量估计,然后运行你的基准测试脚本,看看结果有多接近.
另一个很棒的工具是Siege.如果您真的想要准确地测试性能,那么安装起来并不是很困难.但是,如果你正在寻找一些用户友好的东西,它可能不会起来.
另一个可以使用的具有良好界面的潜在工具是Charles
它并不是真的设计用于负载测试,但它确实有一个功能,你可以运行重复的并发请求(类似于apache工作台),它有一个漂亮的接口.
有很多选择,但它们可能不够用户友好,所以我不会详细介绍
一个好的支付(他们给你几个试运行,然后收费)我过去使用的选项是LoadImpact
如果您想进行任何非常重要的测试,它会有点昂贵,但它会模拟并发浏览器加载,并允许您为模拟用户编写“路径”,以便轻松地通过您的站点.如果您正在寻找具有相对较高精度的非常用户友好的解决方案,我肯定会推荐它们(如果您有现金).
另一个潜在的付费解决方案是CapCal
我对他们并不是很了解.看起来他们也可能有某种免费试用版.
内容总结
以上是互联网集市为您收集整理的php – 这是一个做服务器负载测试的坏方法吗?全部内容,希望文章能够帮你解决php – 这是一个做服务器负载测试的坏方法吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。