21號(hào)開(kāi)始突然發(fā)現(xiàn),項(xiàng)目出現(xiàn)大量事務(wù)超時(shí)鎖住(業(yè)務(wù)沒(méi)有激增,服務(wù)器、數(shù)據(jù)庫(kù)負(fù)載都不高),剛開(kāi)始只是高并發(fā)接口有個(gè)更新read_log表的業(yè)務(wù)有超時(shí)鎖住的情況(該表也確實(shí)大,幾千萬(wàn)的量), 我試著把高并發(fā)接口更新操作暫時(shí)停止了,不再更新read_log表,但是,大概過(guò)個(gè)幾分鐘,整個(gè)項(xiàng)目所有其他涉及到更新數(shù)據(jù)庫(kù)表操作的接口也都出現(xiàn)事務(wù)超時(shí)鎖住的情況,哪怕是最簡(jiǎn)單的登錄接口(登錄用戶更新下用戶登錄時(shí)間)。
我現(xiàn)在完全是蒙,不知道從哪里下手來(lái)解決,如果是單個(gè)接口,我試著改改還行,現(xiàn)在整個(gè)項(xiàng)目所有涉及到更新操作的接口都有.....就覺(jué)似乎不是業(yè)務(wù)代碼的問(wèn)題
webman重啟可以短暫恢復(fù)下,幾分鐘后又會(huì)大面積事務(wù)超時(shí)......
數(shù)據(jù)庫(kù)買(mǎi)的阿里云的高可用數(shù)據(jù)庫(kù), 問(wèn)了阿里云客服,客服只說(shuō)是業(yè)務(wù)代碼問(wèn)題,白問(wèn)......
希望大神可以幫忙提供下,解決這類問(wèn)題的思路,哪些地方可能出問(wèn)題,從哪里去分析下問(wèn)題
應(yīng)該是有控制器沒(méi)提交事務(wù)導(dǎo)致的,安裝 webman/log 會(huì)自動(dòng)記錄并回滾沒(méi)提交的事務(wù),能夠防止事務(wù)死鎖,也方便你們排查問(wèn)題
composer requrie webman/log
記得restart重啟
哈哈,奇怪的事情.....完全搜不到uncommitted 關(guān)鍵詞, 但是目前確實(shí)沒(méi)有事務(wù)超時(shí)的問(wèn)題復(fù)發(fā)~~~
這兩天.....webman/log插件裝了就正常,日志里也沒(méi)有Uncommited 關(guān)鍵詞......還有其他什么問(wèn)題會(huì)導(dǎo)致這種問(wèn)題嗎
從描述上看就是有代碼沒(méi)提交事務(wù)導(dǎo)致的。
進(jìn)入到webman目錄,執(zhí)行 grep Uncommited ./runtime/logs -Rn
或者 grep transaction ./runtime/logs -Rn
如果確實(shí)都沒(méi)有,可能是業(yè)務(wù)bug被你們修復(fù)了。
既然問(wèn)題是21號(hào)開(kāi)始的,看下那幾天提交了哪些代碼做了哪些操作。
基本上面說(shuō)的情況,我補(bǔ)充一下:
1.在進(jìn)一步可能就是死循環(huán),導(dǎo)致進(jìn)程堵塞了
2.看workerman.log,里面應(yīng)該會(huì)有進(jìn)程退出的日志,可以吧那個(gè)時(shí)間段的日志發(fā)出來(lái)