TA的每日心情 | 无聊 2024-9-19 09:07 |
---|
签到天数: 11 天 连续签到: 2 天 [LV.3]测试连长
|
需求:现在的系统有一部分业务是通过hessian的远程服务提供的,为了应对不断的增长的服务器压力,需要对这个提供hessian服务的工程能承受的压力有一个比较详细的了解。
hessian走的http的协议,但是其数据传输跟一般用户发起的http服务还是不一样的,做压力的测试的开源工具还是比较多的,类似jemeter,LoadRunner等都可以,但是这些都没法对hessian服务进行压力测试。
方案1:创建一个web工程,在web工程提供一些http的服务,每个服务会对应的发起一个hessian请求,然后使用某些压力测试工具对这些http进行并发访问。
方案2:自己写java程序,模拟压力测试,然后逐个测试hessian服务。
方案一就不多说了,创建web工程,压力测试我们用的apache的ab test。
方案二:
我的想法是一次性创建X个线程模拟X个并发,然后每个线程循环Y次,每次发起一个hessian的请求,每次执行一次hessian请求,我会创建一个对象收集信息;然后创建一个监控线程,监控这些线程是否都执行完了,如果执行完了就对收集到的数据进行分析。
信息收集对象:
- public class StopWatch {
-
- private long startTime;
- private long endTime;
- // 一次hessian请求耗时
- private long elapsedTime;
- //成功失败
- private boolean status;
-
- public StopWatch(){
- this.startTime = 0L;
- this.endTime = 0L;
- this.elapsedTime = 0L;
- this.status = false;
- }
-
- public long getStartTime() {
- return startTime;
- }
- public void setStartTime(long startTime) {
- this.startTime = startTime;
- }
- public long getEndTime() {
- return endTime;
- }
- public void setEndTime(long endTime) {
- this.endTime = endTime;
- }
- public boolean isStatus() {
- return status;
- }
- public void setStatus(boolean status) {
- this.status = status;
- }
- public long getElapsedTime() {
- return elapsedTime;
- }
- public void setElapsedTime(long elapsedTime) {
- this.elapsedTime = elapsedTime;
- }
- }
复制代码
压力测试主程序:
|
|