【发布时间】:2011-09-16 21:15:00
【问题描述】:
我的 MySQL 数据库(一个 Amazon RDS 实例)上出现越来越多的“死锁”和“锁定超时”问题。直到几天前,该数据库一直运行良好。超过一周没有对服务器代码(执行查询)进行任何更改。我知道异常是什么,但我不知道调试和查找导致问题的特定查询/语句的最佳方法。
设置信息:
- MySQL Amazon RDS 实例(小)
- RDS 配置文件/MySQL 设置中的所有默认设置,字符编码除外,字符编码已更改为 UTF-8
- 进行查询的服务器是带有 Hibernate 的 Tomcat Java 服务器
- 异常信息从 Tomcat 服务器日志中读取
- 查询次数/最小值在 50 - 5000 之间
我最好的猜测是设置(Hibernate 或 MySQL)中存在导致此问题的某些东西。服务器将运行良好,然后延迟将通过屋顶导致各种负面行为。发生这种情况时,实例的 CPU 利用率将接近 100%。
休眠设置为:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass"><value>com.mysql.jdbc.Driver</value></property>
<property name="jdbcUrl"><value>XXXX</value></property>
<property name="user"><value>XXXX</value></property>
<property name="password"><value>XXXX</value></property>
<property name="initialPoolSize"><value>3</value></property>
<property name="minPoolSize"><value>3</value></property>
<property name="maxPoolSize"><value>50</value></property>
<property name="idleConnectionTestPeriod"><value>200</value></property>
<property name="acquireIncrement"><value>1</value></property>
<property name="maxStatements"><value>0</value></property>
<property name="numHelperThreads"><value>6</value></property>
</bean>
如果设置中的某些内容可能导致此问题,请了解从哪里开始调试。
【问题讨论】:
-
你找到答案了吗?
-
SHOW ENGINE INNODB STATUS 命令的输出是什么?
-
您应该查看过 RDS 错误日志。死锁记录在那里
标签: mysql hibernate amazon-web-services