发表于: 2016-04-21 23:14:05

1 2351


【操作步骤】
1.在本地电脑上安装Nginx,参考链接:http://www.cnblogs.com/languoliang/archive/2013/04/01/nginx.html
  安装:$sudo apt-get install nginx
  启动:$sudo /etc/init.d/nginx start
  其他使用命令:$sudo /etc/init.d/nginx {start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}
  配置文件目录:/etc/nginx/nginx.conf
  日志目录:/var/log/nginx
  默认虚拟主机目录:/usr/share/nginx/www

2.安装配置JMeter插件jmeter-plugins

3.学习使用jmeterproxy录制jmx脚本,因为我用的是ubuntu系统,不能使用badboy。


4.压测Memcache服务对项目的影响
    4.1  我首先利用jmeterproxy录制了一个脚本,这个脚本包含以下操作:
        (1)进入登录页面:ITtask_4/pages/login
        (2)输入账号密码登录:ITtask_4/login/validate
        (3)登录成功,进入首页:ITtask_4/pages/u/home
        (4)进入“职业”页面:ITtask_4/pages/u/profession
        (5)进入“关于”页面:ITtask_4/pages/u/about
        (6)退出账号:ITtask_4/pages/exit

        录制好的线程组:

       

 
    4.2 然后我在未启动Memcache服务的情况下,对这个线程组进行压力测试,重点观察线程数为1600、1700时的聚合报告,如下:
        (1)线程数1600

       

        (2)线程数1700

       

    4.3 再然后,我启动Memcache服务,对这个线程组进行压力测试,重点观察线程数为1600、1700、1800时的聚合报告,如下:
        (1)线程数1600

       

        (2)线程数1700

       

        (3)线程数1800

       

    4.4 分析结果:
        (1)当未启动Memcache服务时,线程数为1700时,就会出现error;而当启动Memcache服务后,线程数为1700时不会出现error,当线程数为1800时,出现error。
        (2)考虑线程数为1600时的情况,当没有启动Memcache服务时,90% Line的总体数据为5733ms;启动Memcache服务后,90% Line的总体数据为1167ms。性能显著提升。


【知识总结】
1.关于使用jmeterproxy录制脚本的一些注意点:
    1.1 如果想使用jmeterproxy录制jmx脚本,有两个东西是必须有的,一个是线程组在测试计划下建立;另一个是HTTP代理服务器,在工作台下建立。其余的如录制控制器、HTTP请求默认值、察看结果树监听器等部件都非必要。
    1.2 关于HTTP请求默认值,我刚开始以为这个部件会起到一个过滤器的作用,就是假如我在“HTTP请求默认值”的“Web服务器”一栏填写了“localhost”和“8080”,那么这个代理服务器就会只录制以http://localhost:8080/为前缀的请求,其实不是这样的。“HTTP请求默认值”的作用仅仅是为了显示方便,jmeterproxy启动后,你在浏览器上所提交的所有请求都会被记录下来,假如你在“HTTP请求默认值”中填写了“localhost”和“8080”,那么如果录制结果中有前缀为“localhost:8080”的请求,当你选中这个请求时,就会看到,它的“Web服务器”一栏是空着的,这意味着该请求默认继承了“HTTP请求默认值”里面的内容。
    1.3 关于浏览器连接代理设置,这个很简单,只要保证你设置的代理IP和端口跟你在JMeter中“HTTP代理服务器”里面设置的IP端口一致就行,有一个小细节要注意,我使用的是firefox浏览器,在设置连接代理时,会看到在“手动配置代理”那一栏里面有一项是“不使用代理:”,刚开始这一项的值会写着“localhost,127.0.0.1”,在测试自己写的程序时,要注意把这一项里面的东西删掉。我刚开始没注意这个,在录制脚本时发现,无论如何都捕获不到“localhost:8080”的请求,后来把“不使用代理:”里面的值删掉了就一切正常。

【出现的问题(已解决)】



【出现的问题(未解决)】




【疑问】
1.老大,我在压测时出现一个问题,挺怪的,不知道什么原因。是关于缓存的。在上面的操作步骤4中,我把一些操作(登录、页面跳转、退出)录制成一个脚本。
  当我按照那个操作步骤,在浏览器上进行登录、页面跳转、退出操作时,能够在Memcache中产生3个缓存数据(两个是home页面的学生人数和班级人数,一个是登录验证时根据账号从数据库中查找到的student类型数据)。
  当我使用JMeter进行压测时,发现缓存中只会产生1个数据(只剩下登录验证时的那个student类型数据,home页面的两个数据没有存入缓存),不管线程数为几,即使为1也是这样。不知道什么原因。
  还有一个怪的地方就是,我自己操作时,使用stats items命令查看缓存,能看到有两个item,一个是items:1,一个是items:10。home页面的两个数据是放在items:1里面的,登录时的student数据是放在items:10里面的。如下图:

 

  当使用JMeter压测时,发现只有一个items:10,那个items:1不见了,如下图:

 


返回列表 返回列表
评论

    分享到