调试Amazon RDS上的MySQL死锁

wes*_*737 5 mysql hibernate amazon-web-services

我的MySQL数据库(Amazon RDS实例)上出现了越来越多的"死锁"和"锁定超时"问题.直到几天前,数据库运行良好.服务器代码(执行查询)的更改没有超过一周.我知道异常是什么,但我对调试和查找导致问题的特定查询/语句的最佳方法感到茫然.

设置信息:

  • MySQL Amazon RDS实例(小)
  • 除了字符编码(更改为UTF-8)之外,RDS配置文件/ MySQL设置中的所有内容都是默认的
  • 进行查询的服务器是带有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>
Run Code Online (Sandbox Code Playgroud)

任何想法在哪里开始调试如果设置中的某些东西可能导致这个问题将不胜感激.

Hiy*_*sat 2

我知道很难找到问题,但您可以首先使用以下命令找到导致死锁的查询:

SHOW FULL PROCESSLIST
Run Code Online (Sandbox Code Playgroud)

MYSQL 参考

希望这能帮助您开始