2017年4月19日17:41:58
client
<clients>
<client host="localhost" user_controller_vm="true" maxusers="30000" >
</clients>
tsung运行时可以由多个虚拟机组成,client配置指明这个client机器上最多生成的用户数,如果user_controller_vm=”true”那么用户数达到maxusers,tsung就会自动生成新的vm
默认策略:一个client对应一个cpu,若不设置 默认值为1
N个cpu ,N个tsung client
共同分担权重,每一个分裂的tsung client 权重 weight/n
一单设置cpu属性,无论tsun启动时是否携带-s参数设置共享cpu都会
- 自动分裂cpu个tsungclient实例
- 每一个实例权重为weight/cpu
<servers>
<server host="server1" port="80" type="tcp" weight="4"></server>
<server host="server2" port="80" type="tcp" weight="1"></server>
</servers>
tsung会根据weight值来选择发起请求的server
load
<load>
<arrivalphase phase="1" duration="3" unit="minute">
#<users maxnumber="100" interarrival="0.02" unit="second" ></users>
<users maxunumber="500000" arrivalrate="250" unit="second"></users>>
</arrivalphase>
</load>
load段可配置访问的负载,访问可以配成多个阶段,由phase值定 duration 是持续时间 unit是单位
第一个是 0.02秒相继启动一个用户,持续3分钟
第二是每秒启动250用户 持续3分钟
- 定义一个持续3分钟的压测场景,0.02秒产生一个用户,用户量总量是100 在
- duration 为持续时间 为T1
- 50万用户,将在2000秒(约34分钟)内生成,耗时时长即为T2
- 若T2时间后(34分钟)后因为产生用户数已经达到了上限,将不再产生新的用户,知道整个压测结束
- 若 T1 小于 T2,则50万用户很难达到,因此T1时间要设置长一些
linux知识
网络连接四元祖
1、{srcIP(源IP)源端口,targetIP(目标IP) 目标端口}
2、 unix/linux端口为16位正整数 范围1-65535
3、 1024以下的端口需要root用户授权
4、 一般端口对外设置1024-65535
5、 本机可用IP量为Nip
6、 理论上对外可可建立链接数 total = ip * 6w
内存占用
- Tsung 默认网络放松、接收缓冲区为32K,可以修改成16k,一般够用了
- 一个网络连接对应一个用户,单用户占用内存不到10k
假设一个用户占用内存50k,1w用户占用500M内存
所需PC
假设需要100w用户
1、100w/6w = 17个IP地址
2、500m * 100w/1024 = 50G内存
3、服务器单一IP 承载100万用户:1台主机+17太从机
4、若 单机64G内存+17个IP可用IP地址 就一台就能搞定
文件句柄数关系到linxu并发调优
一个网络连接=一个文件,一个文件拥有一个句柄
ulimit -a 查看有关参数 主要看 open files 这个参数
文件句柄数限制
shell限制:ulimit -n 1000 表示当前shell的当前用户所有进程能打开的最大文件数量为1000
用户限制 但是一个用户可能会同时通过多个shell连接系统,所以还有一个针对用户的显示,通过修改 /etc/security/limits.conf实现往往在文件输入:
root soft nofile 1000
root hard nofile 1200
soft nofile 表示软限制 ,hard nofile表示硬限制, 软限制要小于硬限制,语句表示root用户能打开的最大文件数1000,不管开了多少个shell
ulimit -n 非root用户只能越设置越小,不能越设置越大
默认是普通用户的句柄数是1024,每次关闭系统再次重新登录都会刷新
配置从机器
<clients>
<client hots="1.2.3.4" maxusers="60000" weight="1">
<ip value="1.2.3.10"></ip>
</client>
......
<client hots="1.2.3.5" maxusers="60000" weight="1">
<ip value="1.2.3.11"></ip>
</client>
</clients>
Tsung client 分配用户数
一个tsung client分配的用户数可以理解为会话任务数。
所有配置tsung client元素权重相加之和为总权重TotalWeight,用户总数为Maxnumber
一个tsung client实例分配的模拟用户数可能为:
min(duration* ClientIntensity, Maxnumber *(weight/totalweight)
没有物理丛机,主从节点都在一台服务器上,需要设置use_controller_vm=”true“
tsung_controller对每一个tsung client 生成用户强度分解为
ClientIntensity = PhaseIntensity * Weight / TotalWeight ,而1000 * ClientIntensity就是易读的每秒生成用户速率值。
tsung_client 挂载在ts_client_sup下,由ts_launcher/ts_launcher_static调用ts_client_sup:start_child(Session)启动,是压测任务的最终执行者,承包了所有脏累差的活