大家好,最近做一個http服務,通過json接收服務傳上來的資料。
因為應用場景很簡單,就直接用了dwz的現成架構,springmvc+mybatis。
以前也用過這個架構,覺得還算可以,沒發現什么問題。
但是這次使用中出現奇怪的問題,我先文字描述:
不知道在什么情況下,在controller中呼叫service實作去執行持久化操作,就會卡頓。
用卡頓來形容不知道是否合理,也可以說掛起,或者什么,總之,通過http請求到controller再呼叫service實作進行資料庫查詢時,不會馬上執行service實作類的方法,我debug發現,哪怕在實作類中第一行system.out.print(1);都不會馬上執行,而是過幾秒、甚至幾十秒、1分鐘才會繼續執行并正常回傳。二在卡頓的時候后臺列印的內容問下圖

重啟服務后,不管如何呼叫任意controller的任意service查詢任意表,都沒問題,但在重啟過后使用中不知道什么情況下,就會進入卡頓狀態,而且一旦開始卡頓,每次請求都會卡頓。
不知道是什么原因造成的,與環境有關?事物有關?資料庫等?請大神們指點一二,感激不盡~!
uj5u.com熱心網友回復:
補充一下,一旦進入問題狀態,假如我同一個http請求三次,那么會輸出三次上圖中倒數兩行日志。而在等待時間過后,三個service實作類則同時執行;假如我這個請求是insert一個user,service中查詢庫表來驗證用戶名不得重復,但出現以上情況時,則三條相同的user會在卡頓后同時insert成功,而不經過任何驗證,也就是說,三條記錄的insert是同時進行uj5u.com熱心網友回復:
都下班了嗎?周五系不系都嗨去了,難道只有我在加班么,呼喚鄉親們
uj5u.com熱心網友回復:
繼續呼喚,這個問題不解決睡不著覺
uj5u.com熱心網友回復:
前面有個selectProvince方法 因事務隔離級別是required會阻塞當前執行緒操作uj5u.com熱心網友回復:
感謝,最開始我認為是事物的問題,之前設定的是PROPAGATION_REQUIRES_NEW,掛起。
但后面改成了PROPAGATION_REQUIRED新建事物,這樣還是不正確,請指點。
uj5u.com熱心網友回復:
你把selectProvince先去掉試試
uj5u.com熱心網友回復:
前面有個selectProvince方法 因事務隔離級別是required會阻塞當前執行緒操作
感謝,最開始我認為是事物的問題,之前設定的是PROPAGATION_REQUIRES_NEW,掛起。
但后面改成了PROPAGATION_REQUIRED新建事物,這樣還是不正確,請指點。
你把selectProvince先去掉試試
不是這一個方法的問題,只要一出現卡頓,訪問哪個service都一樣,這個是最基礎的login
uj5u.com熱心網友回復:



uj5u.com熱心網友回復:
前面有個selectProvince方法 因事務隔離級別是required會阻塞當前執行緒操作
感謝,最開始我認為是事物的問題,之前設定的是PROPAGATION_REQUIRES_NEW,掛起。
但后面改成了PROPAGATION_REQUIRED新建事物,這樣還是不正確,請指點。
你把selectProvince先去掉試試
不是這一個方法的問題,只要一出現卡頓,訪問哪個service都一樣,這個是最基礎的login
你不是debug過嗎?進controller會卡嗎?
uj5u.com熱心網友回復:
進controller不會卡,卡在controller中第一次呼叫service實作的地方。不管他是哪個實作類,只要是這個controller第一個執行的service實作就卡住,并且,service實作方法體不執行,哪怕是一句輸出也不會執行,直到等待結束。
uj5u.com熱心網友回復:
你是說,剛啟動時是正常的,運行一階段后才會出現卡頓,而且看你說連system。out。printl都會卡頓,那么久只有一種原因了,是jvm的問題,另外剛啟動的時候好好的,用一階段才會這樣,應該是資源被耗光,沒被回收的問題,你看下你那個什么dwz的框架吧;肯定是這邊出現了問題,造成資源一直被劫持了得不到釋放;uj5u.com熱心網友回復:
進controller不會卡,卡在controller中第一次呼叫service實作的地方。不管他是哪個實作類,只要是這個controller第一個執行的service實作就卡住,并且,service實作方法體不執行,哪怕是一句輸出也不會執行,直到等待結束。
你把Transactional注解去掉看看還卡嗎?
uj5u.com熱心網友回復:
進controller不會卡,卡在controller中第一次呼叫service實作的地方。不管他是哪個實作類,只要是這個controller第一個執行的service實作就卡住,并且,service實作方法體不執行,哪怕是一句輸出也不會執行,直到等待結束。
你把Transactional注解去掉看看還卡嗎?
回滾機制跟這個應該沒有關系吧?一直出差中,付訓來又要面對這個問題
uj5u.com熱心網友回復:
此問題是否解決?轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/119166.html
標籤:Web 開發
