首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat JDBC池连接都停留在套接字读取上,并且不会创建新连接

问Tomcat JDBC池连接都停留在套接字读取上,并且不会创建新连接
EN

Stack Overflow用户
提问于 2013-03-21 07:09:25
回答 1查看 5K关注 0票数 4

我有一个托管在亚马逊ElasticBeanstalk上的Tomcat7应用程序和一个托管在Amazon RDS上的MySQL 5.5数据库。数据库服务器仅为一个Tomcat应用程序提供服务,并将最大连接限制设置为10,000。

然而,在正常运行几个小时后,数据库连接发生了一些奇怪的事情。

MySQL服务器报告Tomcat JDBC连接池只创建了3个连接,它们都处于“休眠”状态(示例输出):

代码语言:javascript
复制
| 228 | root     | ip-10-240-xx-xxx.ap-southeast-2.compute.internal:33270 | xxxxx | Sleep   |   13 |       | NULL             |

Tomcat线程转储建议所有3个连接都在从网络IO套接字读取(阻塞):

代码语言:javascript
复制
at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:150)
        at java.net.SocketInputStream.read(SocketInputStream.java:121)
        at com.mysql.jdbc.util.ReadAheadInputStream.fill(ReadAheadInputStream.java:114)
        at com.mysql.jdbc.util.ReadAheadInputStream.readFromUnderlyingStreamIfNecessary(ReadAheadInputStream.java:161)
        at com.mysql.jdbc.util.ReadAheadInputStream.read(ReadAheadInputStream.java:189)
        - locked <0x00000000bc349cc0> (a com.mysql.jdbc.util.ReadAheadInputStream)
        at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3036)

因为连接池中只有3个数据库连接,而且它们都停留在IO读取上,所以Tomcat拒绝为任何需要数据库数据的HTTP请求提供服务。

Tomcat JDBC池设置已分配:

代码语言:javascript
复制
maxActive="500"
maxIdle="100"
minIdle="50"
initialSize="50"
maxWait="15000"
timeBetweenEvictionRunsMillis="10000"
minEvictableIdleTimeMillis="30000"
removeAbandoned="true"
removeAbandonedTimeout="120000"
logAbandoned="true"
testOnBorrow="true"
testWhileIdle="true"
validationQuery="select 1"
driverClassName="com.mysql.jdbc.Driver"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

我仍然不确定为什么所有的3个数据库连接都停留在网络IO读取上,但是考虑到上面的配置,我希望Tomcat在所有现有连接都很忙的情况下创建额外的连接。

我还有其他8个Beanstalk应用程序使用相同的设置,但是只有这个特定的应用程序有如此奇怪的池化行为和网络IO问题。

你有什么建议?

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-21 08:14:20

正如http://bugs.mysql.com/bug.php?id=31353上所建议的,您可能会遇到不安全的线程问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15536518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档