Отладка тупиков MySQL в Amazon RDS - PullRequest
5 голосов
/ 17 сентября 2011

В моей базе данных MySQL (экземпляр Amazon RDS) растет число проблем с «тупиком» и «тайм-аутом блокировки». База данных работала очень хорошо, пока пару дней назад. В течение более недели не было внесено никаких изменений в код сервера (который выполняет запросы). Я знаю, что такое исключения, но я не знаю, как лучше отлаживать и находить конкретные запросы / операторы, которые вызывают проблемы.

Информация о настройке:

  • MySQL Amazon RDS экземпляр (маленький)
  • Все по умолчанию в профиле RDS / настройках MySQL, кроме кодировки символов, которая изменяется на UTF-8
  • Сервер, выполняющий запросы, - сервер Tomcat Java с Hibernate
  • Информация об исключениях читается из журнала сервера Tomcat
  • запросов / мин между 50 - 5000

По-моему, в настройках (Hibernate или MySQL) есть что-то, что вызывает эту проблему. Сервер будет работать нормально, а затем задержка пройдет через крышу, вызывая все виды негативного поведения. Когда это произойдет, загрузка ЦП экземпляра составит около 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>

Любая идея, с чего начать отладку, если что-то в настройках может вызывать эту проблему, приветствуется.

1 Ответ

1 голос
/ 03 ноября 2013

Мне трудно найти проблему, но вы можете начать с поиска запроса, который вызывает взаимные блокировки, используя:

SHOW FULL PROCESSLIST

Справочник по MYSQL

Надеюсь, это поможет вам начать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...