![]() | 1 me1onsoda 2024-09-13 17:35:41 +08:00 你这样算时间是极不靠谱的,编译器会对指令重排序 |
![]() | 2 Plumes OP @me1onsoda 不只是看日志打印的时间数据,最近看每天的 16:10 分大概率会出现这个情况,这个时候去测试请求接口,也验证了确实会出现接口高延迟 |
3 31415926535x 2024-09-13 19:25:53 +08:00 @Plumes 测试环境可重试的话,尝试用 arthas 抓一下看看是哪个方法的问题 |
![]() | 4 v2hh 2024-09-13 19:28:31 +08:00 是不是那个时间点数据库连接池占满了 |
6 hubqin 2024-09-13 20:49:59 +08:00 会不会集群或网络里面有两个 mysql 实例,形成了负载均衡,其中一个是性能较差的 |
![]() | 8 JYii 2024-09-13 21:04:20 +08:00 代码硬看不出问题的话,看一下时段的主机、服务、数据库的情况 |
![]() | 9 sagaxu 2024-09-13 21:11:14 +08:00 把 GC 日志也开了,full gc 也会引起类似情况。既然是每天的 16:10 分左右,那要排查下四点之后有没有计划任务,不局限于这个进程。 |
![]() | 10 trzzzz 2024-09-13 21:15:03 +08:00 如果 op 用的 druid ,可能耗时在 druid 的获取连接和归还连接那边。jstack 配合 arthas 抓一下吧 |
11 mark2025 2024-09-13 21:25:34 +08:00 备份进程导致高 io ? |
![]() | 12 falsemask 2024-09-13 21:33:09 +08:00 1.数据库用了连接池吗? 2.更新会有行锁吗? |
13 babyrjw 2024-09-13 21:40:37 +08:00 应该是有其他大事务把 id=220269386 这条记录锁住了。 锁住的可能有几种,update 的条件命中 id=220269386 或者 lock_status = 4 或者 lock_etime=1726041977 都会锁住这条记录,可以看一下慢查询日志 |
![]() | 14 Plumes OP @babyrjw 日志里已经出现 updates: 1 ,按照我的理解这应该已经完成提交了吧,查了数据库的 binlog ,也看到已经很快 commit 了 |
![]() | 16 siweipancc 2024-09-14 03:31:32 +08:00 via iPhone ![]() 给你个极端的原因,定期 roll 日志文件的时候 io 塞住了 |
![]() | 17 cheng6563 2024-09-14 09:35:46 +08:00 随机卡,还一卡卡那么久,考虑是随机数生成器问题了. -Djava.security.egd=file:/dev/urandom |
![]() | 18 Plumes OP @siweipancc 附言里有今天的机器磁盘监控,看上去 16 点左右没什么异常 |
![]() | 20 nealHuang 2024-09-19 10:53:42 +08:00 mark 跟踪一下,有思路麻烦各个吴彦祖踢我一下 |
21 baoshijiagong 2024-09-23 13:54:27 +08:00 日志的内容里面耗时这个是当前时间减去 startTime ,startTime 在哪定义的,从截图看并不知道,那么截图里高亮的两个“当前耗时”和“耗时”没有可比性,先忽略。 17.039 的是 updateTagsModuleLibsById 的日志 18.080 的是 updateModuleLibById 的日志 不是两条相邻代码的日志。 updateModuleLibById 方法没有产生 sql 日志。 没有任何不合理之处。 接口延迟,只是 updateModuleLibById 处理时间长了,要查一下这个方法为什么在特定时间,比如刚过 16 点的时候,会有延迟。 |