求助: SpringBoot 应用闲置一晚上后,第一次请求特别慢

2020-04-26 08:40:00 +08:00
 BaiMax

主要是 mybatis 多数据源(配置了两个数据库,oracle 和 sql server,但是只使用了一个) + druid 。

测试了在 win 和 linux 分别部署,结果是一样的,第二天的第一次请求特别慢,达到 1-2 分钟。

我在请求 pending 的时候取了 thread dump,不太会看。。。

thread dump: https://note.ms/evah

3127 次点击
所在节点    问与答
21 条回复
watzds
2020-04-26 09:06:30 +08:00
可能数据库连接闲置后断开了,第一次要重连
watzds
2020-04-26 09:07:22 +08:00
不过一两分钟也太慢了
BaiMax
2020-04-26 10:06:36 +08:00
@watzds 那如何避免这个问题呢?目前是部署上去还没有发布,所以没什么请求。担心到正式环境以后重现
securityCoding
2020-04-26 10:15:33 +08:00
开启 selelct 1 连接探测
mazyi
2020-04-26 10:39:20 +08:00
看日志慢在哪里啊,dump 没用
xiaoxinshiwo
2020-04-26 11:07:36 +08:00
mybatis 设置 dialect 属性
BaiMax
2020-04-26 11:20:48 +08:00
@mazyi 跟踪过就是慢在 mapper 执行数据库查询那里
BaiMax
2020-04-26 11:23:15 +08:00
@securityCoding 项目集成了 springboot admin,日志里可以看到每几秒都有 select 'hello' from dual, 这个是不是同样的效果?
BaiMax
2020-04-26 11:42:23 +08:00
我贴一下配置文件
https://note.ms/ateu
otakustay
2020-04-26 11:44:35 +08:00
简单点,端到端,写个脚本每 1 分钟去 curl 一下首页就好了
fewok
2020-04-26 11:50:04 +08:00
换个角度,会不会是数据库的问题?
BaiMax
2020-04-26 11:52:38 +08:00
@xiaoxinshiwo 那多数据源应该怎么设置?
xiaoxinshiwo
2020-04-26 11:56:15 +08:00
@BaiMax #12 多数据源一样设置啊,只不过有个数据源设置为主数据源
fmumu
2020-04-26 11:57:28 +08:00
多次 dump 看看线程在干嘛
yukiloh
2020-04-26 12:17:01 +08:00
我遇到的情况是,数据库是 maria5.x,最后推断是 maria 的配置的存活时间< springboot 配置的时间(两者才用的时间制式不一样),导致假死(可能,因为最后都没搞定,换了高版本解决)
tab16360
2020-04-26 12:46:08 +08:00
https://x1024.com/index.php/archives/14/
看看这个是不是能解决
gengz
2020-04-26 12:51:51 +08:00
druid:
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 30000
validationQuery: select 'x'
testWhileIdle: true
testOnBorrow: false
testOnReturn: false



druid 的配置, 你参考下
senninha
2020-04-26 12:58:59 +08:00
录个 JFR 分析一下啊
mejee
2020-04-26 13:02:46 +08:00
可能是数据库连接池里都超时了,然后请求的时候拿出连接来,一个个都超时了,比较慢,参考#17
hengyunabc
2020-04-26 13:02:47 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666138

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX