mysql連接超時(shí)怎么處理?
首先,事物內(nèi)加上其他io訪問(wèn),例如緩存,rpc,mq等等,是一個(gè)很差的實(shí)踐,因?yàn)閕o堵住的話,事務(wù)也會(huì)卡住,導(dǎo)致獲取到的鎖一直不釋放。需要在設(shè)計(jì)的時(shí)候,最好提取出來(lái)
第二,dubbo是否是同步調(diào)用呢,如果是,超時(shí)是有異常的,無(wú)論是建立tcp連接超時(shí),還是讀取響應(yīng)超時(shí),超時(shí)異常都是運(yùn)行時(shí)異常,spring默認(rèn)是運(yùn)行時(shí)異常回滾的,你看看是否這個(gè)異常沒被catch
第三,spring和mysql都可以配置事務(wù)超時(shí)時(shí)間,一般mysql上面設(shè)置innodb_lock_wait_timeout,只要事務(wù)獲取了鎖,鎖超過(guò)這個(gè)時(shí)間(或者等待鎖超過(guò)這個(gè)時(shí)間),就會(huì)有異常并回滾。