免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4002 | 回复: 7
打印 上一主题 下一主题

mysql 5.0.22+tomcat 5 +hibernate的问题,请高手指教  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-09 10:45 |只看该作者 |倒序浏览
大家好!
       我们的网站的架构为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)
以上就是问题的描述,不知道我有没有表达清脆,希望各位高手帮忙分析分析原因,是什么问题!谢谢!

论坛徽章:
0
2 [报告]
发表于 2006-08-09 16:53 |只看该作者
怎么没有回复的呢?是不是我说的不清楚,还是怎么回事,就算不能肯定的方案也可以提供一下意见的

论坛徽章:
0
3 [报告]
发表于 2006-08-10 08:57 |只看该作者
建议你贴上mysql的错误日志比较好分析

论坛徽章:
0
4 [报告]
发表于 2006-08-10 10:54 |只看该作者
mysql没有报错误的,现在有个新的情况:如果一条语句在运行的时候处理的速度比较慢,然后就会有很多条语句慢慢的会死锁,用show processlist 查看就会出现很多的连接,然后java就会报联不上数据库,页面出错!有什么办法可以避免死锁,或者说当一条语句出现死锁后对别的语句不会有干扰的!

论坛徽章:
0
5 [报告]
发表于 2006-08-10 11:34 |只看该作者
我想你是贴错地方了,主要问题不在于 mysql 数据库,不妨把问题转到 java 版试试……

我没用过 hibernate,不过我知道 tomcat 的 connection pool 是有点问题的……

论坛徽章:
0
6 [报告]
发表于 2006-08-10 12:38 |只看该作者
原帖由 jiangjiazeng 于 2006-8-10 10:54 发表
mysql没有报错误的,现在有个新的情况:如果一条语句在运行的时候处理的速度比较慢,然后就会有很多条语句慢慢的会死锁,用show processlist 查看就会出现很多的连接,然后java就会报联不上数据库,页面出错!有什 ...


改应用程序,避免死锁

论坛徽章:
0
7 [报告]
发表于 2006-08-10 14:06 |只看该作者
问题可能找到了,是应用程序的问题!正在测试中。。。。。。。。。。

论坛徽章:
0
8 [报告]
发表于 2006-08-12 10:48 |只看该作者
问题已解决,证实是程序问题,一个sql语句出现了问题,感谢各位热心人,还有一个问题,怎么关闭帖子?呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP