2011-09-16 11 views
5

Otrzymuję coraz więcej problemów "Deadlock" i "Lock timeout" w mojej bazie danych MySQL (instancja Amazon RDS). Baza danych działała bardzo dobrze, aż kilka dni temu. Żadne zmiany w kodzie serwera (który wykonuje zapytania) nie trwały dłużej niż tydzień. Wiem, jakie są wyjątki, ale nie mam pojęcia, jak najlepiej debugować i znaleźć konkretne zapytania/stwierdzenia, które powodują problemy.Debugowanie zakleszczeń MySQL na Amazon RDS

informacji o konfiguracji:

  • instancji MySQL Amazon RDS (mały)
  • Wszystko domyślny w profilu RDS/Ustawienia MySQL wyjątkiem kodowania znaków, który zostaje zmieniony na UTF-8
  • Server czyniąc zapytania jest serwer Tomcat Java Hibernate
  • Informacje na temat wyjątków są odczytywane z dziennika serwera Tomcat
  • pytania/min pomiędzy 50 - 5000

Moje najlepsze przypuszczenie, że coś jest w ustawieniach (Hibernacja lub MySQL), które powoduje ten problem. Serwer będzie działał dobrze, a następnie opóźnienie przejdzie przez dach powodując różnego rodzaju negatywne zachowania. Kiedy tak się stanie, wykorzystanie procesora przez instancję będzie bliskie 100%.

Ustawienia hibernacji są:

<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> 

Każdy pomysł gdzie zacząć debugowanie czy coś w ustawieniach może być przyczyną tego problemu byłoby mile widziane.

+0

nie u udaje się znaleźć odpowiedzi? – gnuyoga

+0

jaki jest wynik polecenia SHOW ENGINE INNODB STATUS? – 90hex

Odpowiedz

1

Wiem, że to trudne do zlokalizowania problemu, ale można zacząć od zlokalizowania zapytanie, które spowodować zakleszczenia przy użyciu:

SHOW FULL PROCESSLIST 

MYSQL Reference

nadzieję, że to pomoże Ci zacząć

Powiązane problemy