Re: [問題] Spring @Transaction 問題
※ 引述《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
10/05 07:07, 1F
→
10/05 07:07,
6年前
, 2F
10/05 07:07, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章