2016-11-16 143 views
0

我使用spring-xd通過批處理作業獲取數據。在4個集裝箱上並行運行了大量的作業。任何地方有10到40個工作。其中大部分完成不到一分鐘。我使用redis(不是rabbitmq)和mysql來存儲數據。 Spring-xd-batch爲作業/步驟統計使用不同的mysql-db,而我的應用程序爲了自己的目的使用不同的mysql-db。兩個mysql-dbs都在同一臺服務器上。所有4個容器和管理點指向相同的mysql-db。Spring-xd批處理作業鎖定

我已經注意到的是,大多數時候,一切(至少每天一次)工作正常,但過一段時間,我得到下面的異常:

產生的原因:org.springframework.dao.DataAccessResourceFailureException :無法獲取last_insert_id();嵌套異常是java.sql.SQLException:超出鎖定等待超時;嘗試重新啓動事務。

這是由spring-xd引發的(不是我的應用程序)。這個例外不是特定於特定的容器(它隨機發生在任何容器上),它並不特定於特定的工作。

我花了時間除草扔谷歌。我已經將我的innodb_lock_wait_timeout從50更新爲600.我已將trx_isolation更新爲可重複讀取提交,但這些都沒有任何區別。另外,我啓用了慢速查詢日誌記錄,但所有記錄的查詢都不匹配引發異常的時間範圍。

任何指針將不勝感激。

+0

希望[鏈接](http://stackoverflow.com/questions/9058816/how-to-generate-a-dynamic-sequence-table-in-mysql)可以幫到你 – Faiz

+0

號對不起,但我不' t看看它是如何相關的。也許我錯過了什麼? –

回答

0

我的解決方法是將* _seq表從innodb更改爲mysam引擎。一個多月來一直這樣運行,沒有表鎖定。