首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

ibatis的自带的默许简单连接池性能

2012-11-07 
ibatis的自带的默认简单连接池性能晚上打开浏览器从服务器取图片的时候发现速度慢的惊人(没有用任何服务器

ibatis的自带的默认简单连接池性能

晚上打开浏览器从服务器取图片的时候发现速度慢的惊人(没有用任何服务器端缓存),大概会延迟很长时间才打开,后来去打日志,看了下:

Sun Apr 11 20:41:20 CST 2010[DEBUG] 2010-04-11 20:41:27 :Created connection 25706868.   [DEBUG] 2010-04-11 20:41:27 :{conn-100000} Connection   [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} PreparedStatement:    select * from cases limit ?,8     [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} Parameters: [8]   [DEBUG] 2010-04-11 20:41:27 :{pstm-100001} Types: [java.lang.Integer]   [DEBUG] 2010-04-11 20:41:27 :{rset-100002} ResultSet

?可以看出这个是由于和数据库的连接开销非常大,日志中可以看出光是连接建立就花了7秒钟,吃惊。。。看来选一个好的数据库连接池是破在眉睫的事情了,否则这QPS也实在太高了。

?

ibatis本身自己就带了连接池的,而且默认就是配上的,但是我请求了很多次发现效果也不好。用ibatis做连接mysql的持久层框架。一张页面有8张图片,这些图片存储在数据库中,所以每请求一次页面至少要访问8次数据库,依次把这8张图片取回来。下面部分服务器日志:

   [DEBUG] 2010-04-11 20:45:50 :{rset-100357} Header: [Id, title, pic]   [DEBUG] 2010-04-11 20:45:50 :{rset-100357} Result: [2, clock, [B@10a4d7c]   [DEBUG] 2010-04-11 20:45:55 :Created connection 26137220.   [DEBUG] 2010-04-11 20:45:56 :{conn-100358} Connection   [DEBUG] 2010-04-11 20:45:56 :{pstm-100359} PreparedStatement:    select count(*) from cases      [DEBUG] 2010-04-11 20:45:56 :{pstm-100359} Parameters: []?[DEBUG] 2010-04-11 20:45:56 :{pstm-100359} Types: []   [DEBUG] 2010-04-11 20:45:56 :Returned connection 31966729 to pool.   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} ResultSet   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} Header: [count(*)]   [DEBUG] 2010-04-11 20:45:56 :{rset-100360} Result: [17]   [DEBUG] 2010-04-11 20:45:56 :Returned connection 4355837 to pool.   [DEBUG] 2010-04-11 20:45:56 :Returned connection 4300404 to pool.   [DEBUG] 2010-04-11 20:45:56 :Returned connection 21790187 to pool.   [DEBUG] 2010-04-11 20:45:56 :Returned connection 23417981 to pool.   [DEBUG] 2010-04-11 20:45:56 :Closed connection 26137220.

?可以看出ibatis的默认连接池simple模式建立了许多连接,并且确实有了重用。但是经过使用发现效果还是不理想。

?

最后发现原来是自己的连接池没有配置,使用了默认的连接池,要么就是最大连接数太少,要么就是存在时间太短,马上就close掉了,后来用dbcp并配置了下连接池,速度大增,原来每次点一个页面就要花7秒的,现在只要第一次花7秒,后来每次点都是毫秒级的了,下面是我的配置文件:

<transactionManager type="JDBC">          <dataSource type="DBCP">              <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />              <property name="JDBC.ConnectionURL" value="jdbc:mysql://xxxxxx" />              <property name="JDBC.Username" value="root" />              <property name="JDBC.Password" value="xxxxxx" />              <property name="Pool.MaximumActiveConnections" value="15"/><property name="Pool.MaximumIdleConnections" value="15"/><property name="Pool.MaximumWait" value="1000"/>        </dataSource>      </transactionManager>

?

数据库连接真的非常耗时,今天才算真正的体会到了,原来都是书本上知道的,有连接池真好,呵呵。

热点排行