思路小记 - Loadrunner 初步分析自带例子WebTours

现象

由于最近在学习Loadrunner,写好脚本后,在Controller跑起来,就5分钟 + 100VUSER + 思考时间 + 模拟浏览器缓存 的场景下,后半段都会出现:

  • 例子程序响应非常慢
  • 事务响应时间暴增
  • TPS暴低
  • 吞吐也暴低
  • CPU的使用率和内存的占用也非常低

PS. Apache / 性能高手可以略过此文。


尝试

1、尝试移动WebTours到虚拟机中,排除杀软和防火墙的影响。结果照旧。


2、分析Apache的httpd.conf,里面并没有到连接数的设置,服务器上也没有连接数的设置,没有进展。


3、换了XAMPP的环境,结果就马上不一样,事务响应时间一直保持得相对平稳,时间消耗也大幅降低,CPU的使用率也大幅提高。

PS. XAMPP LITE的Perl环境,过于简约,无法正常把WebTours跑起来。


4、替换WebTours使用Perl的环境为XAMPP的包含的Perl环境,结果又是如以前一些不理想。


5、看来是Apache的环境的问题,对比WebTours自带的httpd.conf和XAMPP的httpd.conf的差异后,经过一系列修改、验证。发现问题在KeepAlive相关的设置上(汗,菜鸟就是菜鸟,花了很多精力才发现关键点)。

  • WebTours自带Apache的httpd.conf是开启KeepAlive,并有设置相关的MaxKeepAliveRequests和KeepAliveTimeout
  • XAMPP的平台中Apache的httpd.conf是没有包含相关的设置

推论

当把WebTours自带Apache的httpd.conf中的KeepAlive及其相关设置注释掉,再次实验的结果就和使用XAMPP平台的结果类似了。

搜索KeepAlive得到相关解释:

KeepAlive:设置是否启用HTTP持久链接,On 代表打开,Off 代表关闭。如果用于同一页面包含大量静态文件的应用,设置为On,以提高性能;如果用于主要为动态页面的应用,设置为Off,以节约内存资源;如果服务器前跑有squid或者其它七层设备,设置为On。

MaxKeepAliveRequests:限制当启用KeepAlive时,每个连接允许的请求数量。如果将此值设为"0",将不限制请求的数目。笔者建议将此值设为100-500之间的一个值,以确保最优的服务器性能。

KeepAliveTimeout:设置持久链接中服务器在两次请求之间等待的秒数。对于高负荷服务器来说,KeepAliveTimeout值较大会导致一些性能方面的问题:超时值越大,与空闲客户端保持连接的进程就越多。

可见,WebTours例子中自带的Apache服务器,在并发的情况下,保持了大量HTTP持久链接,导致响应及其缓慢。


后续,还未实验的,留待后续有时间来继续

1、尝试调整MaxRequest和Timeout看看是否能找到一个合适的组合,并发、响应都能上去。

2、看看Loadrunner里面有没有相关设置的,是不是对默认设置下的表现有所影响。

你可能感兴趣的:(apache,loadrunner,xampp,KeepAlive,WebTours)