作者jacky951 (蓝忆)
看板java
标题[问题] Spring @Transaction 问题
时间Tue Jul 17 11:44:39 2018
版上先进大家好:
最近使用@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的时间比较慢…。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.222.110.31
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1531799085.A.9D5.html
※ 编辑: jacky951 (61.222.110.31), 07/17/2018 15:46:54
1F:→ lan1123: Redis persistence? 07/17 19:21
2F:推 adrianshum: Return 花时间算是正常,毕竟那个时候是在commit 07/17 19:45
3F:→ adrianshum: 有没有什麽profiling tools 可以看慢在哪?不然土炮一 07/17 19:48
4F:→ adrianshum: 点,反正知道什麽时候会出问题,就在那两秒做几次thre 07/17 19:48
5F:→ adrianshum: ad dump,应该可以看出端倪 07/17 19:48
6F:→ ssccg: 先把spring和jpa provider的log都开起来看是慢在哪段吧 07/17 20:30
7F:→ jacky951: 稍早的时候有把JPA transcation的log开起来 07/17 21:02
8F:→ jacky951: 确定的是commit的时候DB response卡住,但原因不晓得 07/17 21:03