抢红包性能测试测试案例

场景描述:抢红包活动,现场700人,每个人必须中奖,中奖活动开始过程中出现宕机;参数(C3P0 100连接数,超时时间30秒;tomcat 连接池4096 ;JVM内存 1024M 1024M 64M 512M)

处理过程:使用loaderrunning进行性能测试,对数据库连接池数量进行,tomcat线程数,JVM内存进行参数调整,加压测试。

发现问题:

1、 程序宕机是因为有数据库连接未关闭的情况,导致数据库连接没有释放,最终所有线程等待,宕机(出现数据库连接异常)。

2、高并发环境下出现数据藏独现象(两个人同事中了同一个CDKEY),采取了hibernate乐观锁。添加方式如下:

数据库表添加version字段

pojo

private Integer version;


映射文件

 <class name="com.hxjr.pojo.Cdkey" table="CDKEY"  <strong>optimistic-lock="version" </strong>>
        <id name="id" type="java.lang.String">
            <column name="ID" length="40" />
            <generator class="uuid.hex" />
        </id>
        
        <!-- version标签用于指定表示版本号的字段信息   -->
        <strong><version name="version" column="version" type="integer"></version> </strong>
        

添加乐观锁之后出现的新问题就是当两条数据对同一个记录进行操作的时候,只有一个会成功,第二个会抛出异常。场景需要每位用户都必须中奖,在这个基础上做了以下优化:

1. 每次更新操作,刷新session;

2. 异常数据接到异常在进行处理。

try{
					zpList = this.activityService.meetingDoQhbRandom(peActivityId, empno, page, rows);
				}catch(Exception e){
					try{
						Thread.sleep(500);
						zpList = this.activityService.meetingDoQhbRandom(peActivityId, empno, page, rows);
					}catch(Exception e1){
						Thread.sleep(500);
						try{
							zpList = this.activityService.meetingDoQhbRandom(peActivityId, empno, page, rows);
						}catch(Exception e2){
							zpList = this.activityService.meetingDoQhbRandom(peActivityId, empno, page, rows);
						}
					}
				}

数据优化了很多,但是还存在不中奖需要重新抽的情况。


后期讨论了两套解决方案:

1 才是缓存或者内存数据库存放cdkey

2 使用代码同步机制,锁住代码块。

要在JMeter中进行抢红包的并发测试,可以按照以下步骤进行设置: 1. 新建一个测试计划,在测试计划中右击,选择"添加" -> "Threads (Users)" -> "线程组",创建一个名为"抢红包测试"的线程组。 2. 在线程组下添加一个HTTP请求,右击线程组,选择"添加" -> "Sampler" -> "HTTP请求",并将其命名为"抢红包"。 3. 在HTTP请求中设置相关的请求参数,包括URL、请求方法、请求头、请求参数等,以模拟抢红包的操作。 4. 在线程组的属性中设置并发数,即同时并发执行抢红包的线程数量。可以在线程组的属性中设置"线程数"和"循环次数"来控制并发测试的规模。 5. 运行测试计划,JMeter会模拟多个用户同时进行抢红包的操作,并记录相应的响应时间和吞吐量等性能指标。 需要注意的是,为了准确模拟真实的并发场景,还可以在测试计划中添加其他相关的元素,如定时器、监听器等,来更好地控制并发场景下的压力测试。 总结:要在JMeter中进行抢红包的并发测试,首先要创建一个名为"抢红包测试"的线程组,然后在线程组中添加一个名为"抢红包"的HTTP请求,并设置相关的请求参数。最后设置并发数,运行测试计划即可进行抢红包的并发测试。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JMeter压力测试(流程骨架/抢红包举例实战/多场景多线程组混合并发)](https://blog.csdn.net/xqtesting/article/details/85090026)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值