FunkLoad 性能调优

FunkLoad安装及使用方法
在这里就不做追述,可以做参考: http://www.51testing.com/html/71/410671-829541.html
FunkLoad性能原理
FunkLoad通过开线程的方式来实现并发处理,一个线程代表一个并发数,当线程数达到用户设置的并发数时,程序开始执行用户所编写的逻辑代码;当然线程数没有与用户设置的并发数吻合时,FunkLoad是不会执行用户的逻辑代码的
对于了解Python语言的人来说,Python并不能有效的利用多核,不管你开多少个线程他也只能在一个核上进行有效利用,这个跟Python的多线程机制有关,想了解的可以参考:  http://blog.163.com/sukerl@126/blog/static/112027649200962792420389/
FunkLoad性能峰值
在调优之前,我们得知道,所在的测试服务器(FunkLoad运行所在的机器)是不是真达到了峰值;关于这点,并没有什么直接有效的方法去直接得出结论,只能通过经验+手工一个一个去试,比方说:你想知道这台测试机器在我测试逻辑下,到底能达到多少并发峰值?首先应该根据测试机器的硬件配置,预估出大概并发量测试,得到测试结果数据,并且保存(后续需要用到这些数据),这就是所谓的经验所得;然后在此并发数上适当的加、减并发数,反复测试,保存测试结果数据;最后,你把所有的测试数据进行对比,此时你会得到一个抛物线式的测试结果,取抛物线定点范围的测试场景进行测试,这时大概就是这台机器所在的峰值了;
FunkLoad调优
在得到了我们所需要的峰值,我们可以真正开始我们的调优计划了,调优的分类有多种,下面都会一一列述,可以单一调优,也可以相互组合调优,多种方法之前并不冲突
taskset
该命令为系统自带,说的简单点就是:指定进程运行哪个CPU,并且最大程度利用该CPU,命令详解可以 man taskset
参考命令:taskset -c 0 fl-run-bench --simple-fetch -c 10 -D 60 test.py FunkloadCommon.test_common,这样就可以把脚本有效指定在cpu0上执行了
比方说我们总共有2个核,如果想把四个核的资源都有效的利用起来就可以这么用
taskset -c 0 fl-run-bench --simple-fetch -c 10 -D 60 test.py FunkloadCommon.test_common
taskset -c 1 fl-run-bench --simple-fetch -c 10 -D 60 test.py FunkloadCommon.test_common
这里有几点需要注意,FunkLoad的-c和-D后面的参数必须保持一致,不然你出来的report就不能Merge成一份;且两个脚本运行的开始时间也必须一致,不然结果就会偏差,相差时间超过脚本运行时间,你Merge成的结果就完全没意义了
分布式部署
看到这个标题大家可能会有疑问,我已经有上面的taskset命令解决了python的多核问题,为什么还要用分布式呢?大家有没有想到一个场景,如果我只taskset了一半的cpu的核数,发现系统的其他硬件标准已经到瓶颈了,比方说内存,这时候你在taskset一个FunkLoad出来,所出来的结果就没有任何意义,并且还可能所有的程序压根就执行不下去了,这时候就需要用到我们的分布式了;
分布式有多种实现方法,在这里我们只讲最简单的实现方式:命令行实现,实现如下:
fl-run-bench -c 10 -D 60 -f --simple-fetch test.py FunkloadCommon.test_common --distribute --distribute-workers=username1:passwd1@ip1,username2:passws2@ip2
正如大家所看到的,实现分布式就是在原始命令行下加入:--distribute --distribute-workers=username1:passwd1@ip1,username2:passws2@ip2参数,其中我们需要关心的只是:username1:passwd1@ip1,username2:passws2@ip2,username代表:机器用户名,passwd代表:机器密码,ip代表:机器的ip地址;需要分布几台直接在后面加上即可
pypy
在现在的FunkLoad官网上,实现这方面的性能优化还是psyco,由于现在psyco已经停止更新,并且都已经转移到pypy上了,也就是说pypy就是psyco的后继项目,所以这里改为pypy调优
pypy所的通熟一点就是:用 Python 实现的 Python,想要详细了解的自行Google
pypy对于FunkLoad的调优没有原先的psyco那么简单,他需要另外安装,且还需要修改FunkLoad下的fl-run-bench启动命令,可能在过程中,还会出现一些报错,这里有不再一一讲述;只是告诉大家如果想要提高自身Python的代码性能,可以用pypy
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值