MySQL官方网站下载:
1、MySQL-server-5.5.28-1.rhel4.i386.rpm
2、java驱动 mysql-connector-java-5.1.5-bin.jar
测试服务器为Dell E5410 的Debian linux 2.6,配置为:
1、4核,2.33GHz
2、内存3G
3、SATA硬盘2T
web服务器:tomcat5.5
打压工具:Apache Bench
监控工具:mysqladmin
测试思路:
1、使用自定义数据库连接池,最大连接数500;
2、每个请求做1000次插入;
自定义连接池代码:DBConnectionManager
public class DBConnectionManager {
static private DBConnectionManager instance; // 唯一实例
static private int clients;
private Vector drivers = new Vector();
private PrintWriter log;
private Hashtable pools = new Hashtable();
/**
* 返回唯一实例.如果是第一次调用此方法,则创建实例
*
* @return DBConnectionManager 唯一实例
*/
static synchronized public DBConnectionManager getInstance() {
if (instance == null) {
instance = new DBConnectionManager();
}
clients++;
return instance;
}
/**
* 建构函数私有以防止其它对象创建本类实例
*/
private DBConnectionManager() {
init();
}
/**
* 将连接对象返回给由名字指定的连接池
*
* @param name
* 在属性文件中定义的连接池名字
* @param con
* 连接对象
*/
public void freeConnection(String name, Connection con) {
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null) {
pool.freeConnection(con);
}
}
/**
* 获得一个可用的(空闲的)连接.如果没有可用连接,且已有连接数小于最大连接数 限制,则创建并返回新连接
*
* @param name
* 在属性文件中定义的连接池名字
* @return Connection 可用连接或null
*/
public Connection getConnection(String name) {
DBConnectionPool pool = (DBConnectionPool) pools.get(name);
if (pool != null) {
return pool.getConnection();
}
return null;
}
/**
* 关闭所有连接,撤销驱动程序的注册
*/
public synchronized void release() {
// 等待直到最后一个客户程序调用
if (--clients !&