Re: [問題] Spring @Transaction 問題

看板java作者 (Traveler)時間6年前 (2018/10/01 01:30), 編輯推噓1(101)
留言2則, 1人參與, 6年前最新討論串2/2 (看更多)
※ 引述《jacky951 (藍憶)》之銘言: : 版上先進大家好: :   最近使用@Transation 遇到一個很奇怪的問題,範例如下: : public void caller(){ : log.info("start:{}", LocalDateTime.now()); : target.method(); : log.info("end:{}", LocalDateTime.now()); : } : @Transation(timeout = 3) : public Object method(){ : //do some Logic : log.info("process :{}", LocalDateTime.now()); : return object; : } : 執行記錄大概會是 0 -> 11ms -> 20ms : 光是做return 就花了快一半的時間,而且在每個整點的00、15、30、45分 : 有機會會變成 0 -> 11ms -> 2000ms : 已經確認沒有系統排程、程式排程、DB排程 : 初步懷疑是spring AOP的問題,但理論上應該每次都會耗時很高, : 沒甚麼道理每15分鐘固定一次,而且不管在哪台機器上都一樣 : 執行環境為 : docker openJDK8 + Spring Boot + spring MVC + spring DATA (JPA、Redis) : 有透過JConsole去看過thread 跟 GC 看起來都正常 : thread 有defualt initial 因此沒有變化 : GC時間約每10分鐘一次,跟00 15 30 45 對不上。 : 現在找不到任何頭緒或該怎麼檢測,想請問版上先進還有什麼Idea可以測試? : 目前有看到transcation commit的時間比較慢…。 時間有點久了~不知道你解了沒~ 根據我的經驗 你的問題應該是出在Connetion Pool~ 要釐清點的 1.你Database的Connection pool 有沒有設定正確? 因為如果你的Pool 沒有活的conneciton 可以用,就會導致要重新建connection, 所以速度會很慢~ 設定好Connection pool,並保持pool內的connection 有效性 和控制好pool的connection 數量,應該就可以解決你的問題。 2.如果有設定正確 那要檢查一下 你的程式和DB之間是否有 Firewall, Firewall 設定可能會看connection 太久會自動斷掉 但程式這邊conneciton pool卻以為connection還沒死~~ 不過這通常是會出現connection timeout 的問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.101.243 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1538328614.A.C76.html

10/05 07:07, 6年前 , 1F
也可改用 Spring boot 2.0 以上的版本,使用 Spring
10/05 07:07, 1F

10/05 07:07, 6年前 , 2F
jdbc 內建 hikari 超快
10/05 07:07, 2F
文章代碼(AID): #1RiGWcns (java)
討論串 (同標題文章)
文章代碼(AID): #1RiGWcns (java)