影响性能的测试报告(数据库版)测试源代码

CapabilityForConnection 主运行程序,读取配置文件init.properties、reference.properties初始化参数。调用POOLTEST(一次完整的),计算其平均时间与使用连接数
package  com.cea.repository.test;

import
 org.apache.commons.logging.LogFactory;
import
 org.apache.commons.logging.Log;
import
 java.util.Properties;
import
 java.io.FileInputStream;
import
 java.io.InputStream;

public class
 CapabilityForConnection {
    
private static Log log = LogFactory.getLog(CapabilityForConnection.class
);
    
/**

     * 计算一次测试所消耗的时间
     
*/
    
public static long times = 0 ;
    
/**

     * 连接数
     
*/
    
public static long psize = 0 ;

    
public static void main(String[] args) throws
 Exception {
        
/**

         * 运行的次数
         
*/
        
int size = 1 ;
        
/**

         * 见POOLTEST说明
         
*/
        
int execsum = 0 ;
        
/**

         * 见POOLTEST说明
         
*/
        
int opencon = 0 ;
        
/**

         * execsum对应properties的命名
         
*/
        String execs 
= null ;
        
/**

         * opencon对应properties的命名
         
*/
        String openc 
= null ;

        
long sumtime = 0
;
        Properties prop 
= initProperty("reference.properties"
);
        Properties init 
= initProperty("init.properties"
);

        
if (init.size() > 0
) {
            Object o 
= init.get("init"
);
            size 
=
 Integer.parseInt(o.toString());
            execs 
= init.get("name0"
).toString();
            openc 
= init.get("name1"
).toString();
        }

        
for (int i = 0; i < prop.size() / 2; i++
) {
            execsum 
= Integer.parseInt(prop.getProperty(execs +
 i).toString());
            opencon 
= Integer.parseInt(prop.getProperty(openc +
 i).toString());
            sumtime 
= 0
;
            psize 
= 0
;
            log.info(
"" + (i + 1+ "组数据:"
);
            log.info(
"并发应用数:" + execsum + " 模拟连接数:" +
 opencon);

            String[] reference 
= {"" + execsum, "" +
 opencon};
            
for (int j = 0; j < size; j++
) {
                times 
= 0
;
                PoolTest.main(reference);
                sumtime 
+=
 times;
            }
            log.info(
"" + (i + 1+ "组数据共执行" + size + "次;平均耗时为:" +

                     sumtime 
/ (size * execsum) + "毫秒" );
            log.info(
"平均使用" + psize / size + "个连接"
);

        }
    }

    
private static Properties initProperty(String filename) throws
 Exception {
        InputStream is 
= new
 FileInputStream(filename);
        Properties prop 
= new
 Properties();
        prop.load(is);
        
return
 prop;

    }
}

POOLTEST计算一次完整
过程耗时,统计消耗的连接
package com.cea.repository.test;

import
 com.cea.repository.test.testdata.MainExecute;
import
 java.util.HashMap;
import
 java.util.Map;
import
 com.cea.repository.connection.PoolSupper;
import
 org.apache.commons.logging.LogFactory;
import
 org.apache.commons.logging.Log;
/**

 *
 * 

Title: 连接池性能测试


 *
 * 

Description: 测试不合理的利用连接对WEB应用所造成影响.


 *
 * 

Copyright: Copyright (c) 2005


 *
 * 

Company: 


 *
 * 
@author  小舟
 * 
@version
 1.0
 
*/

public class PoolTest extends  Thread {
    
private static Log log = LogFactory.getLog(PoolTest.class
);
    
/**

     * 并发执行MainExecute的数量
     
*/
    
private static int EXECUTESUM = 35 ;
    
/**

     * 一次MainExecute执行所请求的连接数
     
*/
    
public static int CONNECTIONS = 3 ;
    
/**

     * 记录所使用的连接
     
*/
    
public static Map poolTestMap = new  HashMap();
    
/**

     * 第sum次执行MainExecute所需要的时间
     
*/
    
public int sum = 0 ;

    
public void
 run() {
        
try
 {
            
long s =
 System.currentTimeMillis();
            com.cea.repository.test.testdata.MainExecute.main(
null
);
            
long t = System.currentTimeMillis() -
 s;
            CapabilityForConnection.times 
+=
t;
//
            if(CapabilityForConnection.times < t){
//
                CapabilityForConnection.times = t;
//
            }

//
            log.info("time" + (++sum) + ":" +
//                               (System.currentTimeMillis() - s));

        } catch  (Exception ex) {
        }
    }

    
public static void main(String[] args) throws
 Exception {
        
if(args!= null && args.length>1
){
            EXECUTESUM 
= Integer.parseInt(args[0
]);
            CONNECTIONS 
= Integer.parseInt(args[1
]);
        }

        PoolSupper.initPool();
        startExec(EXECUTESUM);
        
//设定足够长的时间等待所有程序执行完,得到准确的并发执行所消耗的时间

        try  {
            Thread.sleep(
6000
);
        } 
catch
 (InterruptedException ex) {
            ex.printStackTrace();
        }
        log.info(
"运行平均耗时:" + CapabilityForConnection.times/
EXECUTESUM);
        
//如果条件成立,证明连接没有被回收,只要存在一个相同的,就证明连接被重复利用了

        CapabilityForConnection.psize += poolTestMap.size();
        
if (poolTestMap.size() ==
 EXECUTESUM) {
            log.info(
"不存在重复使用的连接,共创建" + poolTestMap.size()+ "个连接"
 );
        } 
else
 {
            log.info(
"共使用" + poolTestMap.size()+ "个连接"
 );
        }
        clear();
    }

    
private static void startExec(int
 EXECUTESUM) {
        
int i = 0
;
        
while (i <
 EXECUTESUM) {
            
if (i++ <
 EXECUTESUM) {
                
try
 {
                    
new
 PoolTest().start();
                } 
catch
 (Exception ex2) {
                }
            }
        }
    }
    
private static void
 clear() {
        poolTestMap 
= new
 HashMap();
    }


}

 

简单的不能再简单的测试代码:
package  com.cea.repository.test.testdata;

import
 com.cea.repository.connection.drive.ConnectionFactory;
import
 java.sql.Connection;
import
 java.sql.Statement;
import
 java.sql.ResultSet;
import
 java.sql.PreparedStatement;
import
 java.util.HashMap;
import
 java.util.Map;
import
 java.util.List;
import
 java.util.ArrayList;
import
 com.cea.repository.test.PoolTest;
import
 com.cea.repository.connection.poolpository.PoolFactory;

/**

 * 
 * 

Title: 


 * 

Description: 


 * 

Copyright: Copyright (c) 2004


 * 

Company: cea


 * 
@author  小舟
 * 
@version
 1.0
 
*/

public class  MainExecute {
    
public static void main(String[] args) throws
 Exception {
       testConnection();
    }

    
static void testConnection() throws
 Exception {
        
for (int i = 0; i < PoolTest.CONNECTIONS; i++
) {
            Connection con 
=
 PoolFactory.newInstance();
            
//这里的改变直接影响连接的复用

            Thread.sleep(50 );
            PoolTest.poolTestMap.put(con.toString(), 
""
);
            con.close();
        }
    }

}

三个配置文件的内容:
init.properties文件
#运行的次数
init
=5

#并发执行MainExecute的数量所匹配的名字
name0
= execsum
#一次MainExecute执行所请求的连接数所匹配的名字
name1
=opencon

reference.properties文件
#过滤数据
execsum0
=10

opencon0
=1
#第一次测试数据
execsum1
=100
opencon1
=6
#第二次测试数据
execsum2
=85
opencon2
=9
#第三次测试数据
execsum3
=140
opencon3
=3

最后一个是pool-config.xml数据源配置:
xml version="1.0" encoding="GB2312"?>
<DataResources>
  
<ResourceParams dateIndentity="boat1">
    
<defaultAutoCommit>falsedefaultAutoCommit>
    
<initialSize>30initialSize>
    
<maxActive>40maxActive>
    
<minIdle>0minIdle>
    
<maxIdle>18maxIdle>
    
<maxWait>10000maxWait>
    
<username>forumusername>
    
<password>kingpassword>
    
<driverClassName>oracle.jdbc.driver.OracleDriverdriverClassName>
    
<url>jdbc:oracle:thin:@192.168.1.3:1521:gzesturl>
    
<removeAbandoned>trueremoveAbandoned>
    
<removeAbandonedTimeout>10removeAbandonedTimeout>
    
<logAbandoned>truelogAbandoned>
  
ResourceParams>
DataResources>
测试用例

TAG: 测试报告 数据库 性能测试 源代码

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用Loadrunner测试Mysql数据库性能,需要遵循以下步骤: 1. 安装Loadrunner软件,并在Loadrunner中打开Vugen(Virtual User Generator)。 2. 在Vugen中创建一个新的脚本,并选择协议类型为ODBC。 3. 配置ODBC数据源,以便与Mysql数据库建立连接。 4. 在脚本中添加数据库操作,比如插入、更新、查询等。 5. 设置负载测试参数,如虚拟用户数、持续时间、并发请求数等。 6. 运行负载测试,收集性能数据。 7. 分析性能数据,发现潜在的性能瓶颈,并进行优化。 需要注意的是,在进行负载测试前,要确保Mysql数据库已经正确地配置和优化,以避免测试结果受到数据库本身的限制。另外,负载测试要在生产环境之外进行,以避免对实际业务造成影响。 ### 回答2: 运用Loadrunner对MySQL数据库进行性能测试是一种常见的方法。Loadrunner是一款功能强大的性能测试工具,可以模拟多个用户同时对MySQL数据库进行读写操作,以评估数据库在高负载情况下的性能表现。 首先,需要创建一个测试场景,包括模拟用户的行为和操作,例如数据库查询、插入、更新和删除等操作。然后,设置虚拟用户数量和并发数,以模拟实际应用场景下的负载。 其次,配置数据库连接参数,包括数据库服务器地址、端口号、用户名和密码等。Loadrunner可以使用自带的数据库协议模拟真实的数据库请求,通过执行SQL语句向数据库发送请求。 接下来,使用Loadrunner的脚本编辑器编写脚本,包括数据库连接、查询、更新等操作。可以通过录制脚本的方式,将用户的操作转化为脚本,或者手动编写脚本以模拟特定的数据库操作。 一旦脚本编写完成,可以开始进行性能测试。Loadrunner可以按照预先设定的虚拟用户数量和并发数,同时运行多个用户脚本,模拟多个用户对数据库进行操作。 在测试运行期间,Loadrunner会收集各种性能指标,例如响应时间、吞吐量、并发数等。通过分析这些指标,可以评估数据库性能,并找出潜在的性能瓶颈。 最后,可以根据测试结果进行优化和调整。通过不断重复测试、分析和优化的循环,可以提高MySQL数据库性能,提供更好的用户体验。[300字] ### 回答3: 使用LoadRunner测试MySQL数据库性能可以通过以下步骤进行: 1. 安装LoadRunner:首先,需要下载并安装LoadRunner软件,确保本兼容并按照指示进行安装。 2. 创建脚本:在LoadRunner的Vuser脚本编辑器中,创建一个新的脚本来模拟对MySQL数据库的访问。脚本包括必要的代码和配置,例如数据库连接,查询语句等。 3. 参数化:通过参数化数据,可以模拟多个用户同时访问数据库。可以使用LoadRunner内置的参数化功能来实现。将脚本中的固定数据替换为参数,例如使用用户名、密码和查询语句等。 4. 创建虚拟用户:使用LoadRunner的“Virtual User Generator”创建虚拟用户,配置虚拟用户数量和行为。为每个虚拟用户分配不同的参数值,以模拟多个用户的并发访问。 5. 运行负载测试:使用LoadRunner的控制台或命令行界面来运行负载测试。在测试期间,LoadRunner会模拟多个虚拟用户并发地访问MySQL数据库,并且记录关键性能指标,如响应时间、吞吐量等。 6. 分析结果:在测试结束后,可以使用LoadRunner的分析工具来查看测试结果。可以生成图表和报告,以便更好地理解数据库性能,并识别潜在的性能瓶颈和问题。 需要注意的是,在进行MySQL数据库性能测试时,应确保测试环境的合理性和一致性。数据库服务器的配置、网络连接和负载情况等因素都可以对测试结果产生影响,因此应尽可能模拟真实的生产环境进行性能测试

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值