В моей базе данных 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>
Любая идея, с чего начать отладку, если что-то в настройках может вызывать эту проблему, приветствуется.