听海——sky 发表于 2018-6-5 17:26:34

记录一次服务器端性能测试的通用脚本

业务场景描述

5000个用户分批次登陆系统,但是要保证登陆的用户中,时刻有一定比例的用户做业务(6%),其他用
户登陆后等待;执行完业务的用户进入等待队列,然后从等待队列选取一人继续执行业务,但是要保证
时刻有6%的执行业务占比。可以控制总的性能测试执行时间!

如下编写的场景脚本:
<p>
</p><p>#include</p><p>
</p><p>#include</p><p>
</p><p>{</p><p>
</p><p>string logger;</p><p>
</p><p>//共享变量,控制业务的起止时间</p><p>
</p><p>shared t_start,t_end;</p><p>
</p><p>int t,t_zong;</p><p>
</p><p>//用于第一组并发用户的判断,同时也把值赋予id_yw;</p><p>
</p><p>shared num_yw,num_yw1;</p><p>
</p><p>//业务组内,每个虚拟用户的id</p><p>
</p><p>int id_yw;</p><p>
</p><p>//下一个操作业务的用户id</p><p>
</p><p>shared id_next,share;</p><p>
</p><p>int num_zong, num_binf;</p><p>
</p><p>//设定wait的等待时间</p><p>
</p><p>int time_out;</p><p>
</p><p>//根据业务所占比重计算,暂时用2,测试取整函数!</p><p>
</p><p>num_zong = _nusers;</p><p>
</p><p>num_binf = (_nusers*3)/10;</p><p>
</p><p>//设定wait的等待时间,越长越好,假若一直没被激活,此时间可以设置为session的失效时间。</p><p>
</p><p>time_out = (_nusers)*3000;</p><p>
</p><p>//t_zong,业务运行时间,暂时根据并发用户计算,1200 60,60,1000</p><p>
</p><p>t_zong = (_nusers)*3000;</p><p>
</p><p>//登录系统,一秒两个用户</p><p>
</p><p>//delay((_uid)*500);</p><p>
</p><p>share = num_binf;</p><p>
</p><p>//开始业务</p><p>
</p><p>num_yw1++;</p><p>
</p><p>id_yw = num_yw1;</p><p>
</p><p>t_start = start_time["yw_time"];</p><p>
</p><p>do{</p><p>
</p><p>num_yw++;</p><p>
</p><p>//第一次发起并发,发起id_yw比较小的(数量为该组需要并发的人数),大于id_yw的用户等待被激活</p><p>
</p><p>if(num_yw > num_binf)</p><p>
</p><p>{</p><p>
</p><p>//此处用户一直在监听,是否被激活,即现有操作人员结束操作后,随机产生的id号是否与自己匹配。如果匹配则开始业务操作,否则继续等待。</p><p>
</p><p>wait(&id_next,id_yw,id_yw,0,time_out);</p><p>
</p><p>if(wait(&id_next,id_yw,id_yw,0,time_out) == 0)</p><p>
</p><p>{</p><p>
</p><p>//break;</p><p>
</p><p>//script_exit("");</p><p>
</p><p>user_exit(-1, "Fatal Error - Aborting");</p><p>
</p><p>}</p>

//说明:此处判断是否是被正常激活。0为等待超时(非正常激活)。当suite结束时,势必会造成大量的

//用户非正常激活,从而同时并发下面的业务。所以,此处设置适当延迟,使用户顺序推出。

<p>//delay(id_yw*10000);</p><p>
</p><p>}</p><p>
</p><p>else</p><p>
</p><p>{</p><p>
</p><p>logger = "the yw is starting.....";</p><p>
</p><p>writelog(logger);</p><p>
</p><p>}</p><p>
</p><p>//else直接往下走。</p><p>
</p><p>//开始操作业务</p><p>
</p><p>//使用delay(8000)模拟业务</p><p>
</p><p>delay(8000);</p><p>
</p><p>//结束操作业务</p><p>
</p><p>t_end = stop_time["yw_time"];</p><p>
</p><p>t = t_end - t_start;</p><p>
</p><p>//业务结束后,在用户组内随机取一个用户id,赋给共享变量next_id</p><p>
</p><p>//id_next = ((rand()) % num_zong )+1;</p><p>
</p><p>share++;</p><p>
</p><p>if(share<=num_zong)</p><p>
</p><p>{</p><p>
</p><p>id_next =share;</p><p>
</p><p>}else{</p><p>
</p><p>share = 1;</p><p>
</p><p>id_next =share;</p><p>
</p><p>}</p><p>
</p><p>}while(t</p><p>
</p><p>}</p><p></p>


页: [1]
查看完整版本: 记录一次服务器端性能测试的通用脚本