- 论坛徽章:
- 0
|
大家好!
我们的网站的架构为mysql 5.0.22+tomcat 5 +hibernate+java,改版不久,经常出问题,请求帮忙分析原因。网站最高同时在线人数为500左右!连接会话数为最高10000左右。
网站配置的描述如下:
我们采用的是tomcat连接池,tomcat连接池的配置如下:
<Resource
name="jdbc/jocko2DB"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="200"
maxWait="5000"
removeAbandoned="true"
removeAbandonedTimeout="3000"
logAbandoned="true"
maxActive="350"/>
tomcat的配置如下
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="1500" minSpareThreads="500" maxSpareThreads="1500"
enableLookups="false" redirectPort="8443" acceptCount="100"
URIEncoding="GBK" connectionTimeout="20000" disableUploadTimeout="true" />
mysql的配置如下:
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
net_buffer_length = 8K
max_connections =500
read_buffer_size = 2M
read_rnd_buffer_size = 8M
query_cache_size =64M
query_cache_type =2
myisam_sort_buffer_size =64M
。
以上为一些基本参数的配置,如果有不明白的请具体提出。
问题的描述如下:
一、tomcat的连接池
maxIdle="200"
removeAbandoned="true"
removeAbandonedTimeout="3000"
可是mysql show processlist
里面的time超过了3000,
为什么tomcat不回收空连接?
二、在mysql的最大连接数达到200后,空连接一直没有释放,在这种状况停留了几个小时后,会突然有大量新增连接,从而出现mysql连接超过500,tomcat连接被拒,错误的描述如下
Last packet sent to the server was 0 ms ago.
2006-08-07 10:31:55,518 ERROR [org.hibernate.util.JDBCExceptionReporter :38] - Cannot open connection
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused
STACKTRACE:
java.net.SocketException: java.net.ConnectException: Connection refused
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2592)
at com.mysql.jdbc.Connection.<init>(Connection.java:1509)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
三 有时候在tomcat的空连接为200后,会出现这样的错误:
2006-08-08 17:26:40,982 WARN [org.hibernate.util.JDBCExceptionReporter :38] - SQL Error: 0, SQLState: null
2006-08-08 17:26:40,983 ERROR [org.hibernate.util.JDBCExceptionReporter :46] - Cannot get a connection, pool exhausted
2006-08-08 17:26:40,983 ERROR [org.hibernate.util.JDBCExceptionReporter :38] - Cannot open connection
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool exhausted
at org.apache.tomcat.dbcp.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:103)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:540)
at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59)
at org.hibernate.jdbc.AbstractBatcher.openConnection(AbstractBatcher.java:33
at org.hibernate.impl.SessionImpl.connect(SessionImpl.java:1629)
at org.hibernate.impl.SessionImpl.connection(SessionImpl.java:1609)
以上就是问题的描述,不知道我有没有表达清脆,希望各位高手帮忙分析分析原因,是什么问题!谢谢! |
|