2011-09-16 188 views
5

我在我的MySQL數據庫(Amazon RDS實例)上遇到越來越多的「死鎖」和「鎖定超時」問題。直到幾天前,數據庫運行良好。服務器代碼(執行查詢)沒有更改超過一週。我知道什麼是例外情況,但對於調試和查找導致問題的特定查詢/語句的最佳方式,我不知所措。在Amazon RDS上調試MySQL死鎖

信息上設置:

  • 的MySQL亞馬遜RDS實例(小)
  • 一切默認RDS資料/除字符編碼,這是改爲UTF-8
  • 服務器使得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> 

任何想法從哪裏開始,如果事情的設置可能會造成這個問題的調試,將不勝感激。

+0

難道ü設法找到一些答案? – gnuyoga

+0

命令SHOW ENGINE INNODB STATUS的輸出是什麼? – 90hex

回答

1

我知道這很難找到這個問題,但你可以開始找到利用導致死鎖查詢:

SHOW FULL PROCESSLIST 

MYSQL Reference

希望這將有助於你開始