JVM waiting分析-mysql表锁定/Druid-springboot配置
2019-08-13 11:18:10
362
0
智能锁项目这几天一直在测试电池电量的问题,
好几个测试人员不停的开关锁,每天就没停过。
发现一个问题,系统后台正常,但是后台所有接口无响应的情况,每次都是等一会就会自动恢复。
这个问题已经出现过有好几次,今天又发生了这个问题,于是分析了一把。
第一次使用了jstack,
(= ̄ω ̄=)
直接找到进程pid,打印堆栈信息.
/usr/local/java/jdk1.8.0_151/bin/jstack -l 13315 >normal.log
发现很多20001,web端口的等待。
最后都是到卡在获取数据库连接上。
妥妥的应该是没有足够的数据库连接。
"http-nio-20001-exec-124" #16019 daemon prio=5 os_prio=0 tid=0x00007fd48c0fb800 nid=0x389 waiting on condition [0x00007fd45d9d7000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000841a5748> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1682)
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1280)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1148)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4573)
"http-nio-20001-exec-122" #16017 daemon prio=5 os_prio=0 tid=0x00007fd488051800 nid=0x386 waiting on condition [0x00007fd45dbd9000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000841a5748> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at com.alibaba.druid.pool.DruidDataSource.takeLast(DruidDataSource.java:1682)
at com.alibaba.druid.pool.DruidDataSource.getConnectionInternal(DruidDataSource.java:1280)
at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1148)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4573)
at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:666)
at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:4569)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1126)
at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1118)
然后看项目里面的配置,才发现用了druid-spring-boot-starter.. (。・`ω´・)
但是配置里面完全没有配置,
全部是默认配置,
通过查看
xx/druid/
发现最大连接数默认配置是8. 而且之前就达到过这个数量。
速度把配置改掉,增加到20,后面再看看是否还会出现~
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: @jdbc.url@
username: @jdbc.username@
password: @jdbc.password@
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 连接池的配置信息
maxActive: 20
后记0815
发现不是连接池大小的问题,还是数据库的问题。
数据库表被锁定了。其他的查询都在等待~
运维那边有每天定时备份数据库,使用的mysqldump -opt
晚上定时备份,不知什么情况,定时任务竟然在白天也在运行。然后导致表锁定了Waiting for table metadata lock
好吧..
2019-08-15 10:46:48
0
赞
赏
本文基于CC BY-NC-ND 4.0 许可协议发布,作者:野生的喵喵。 固定链接: 【JVM waiting分析-mysql表锁定/Druid-springboot配置】 转载请注明
相关文章:
发表新的评论
文章分类
文章归档
标签
deb ,
,
蓝屏 ,
select ,
html5 ,
tomcat ,
gcc ,
ajax ,
apt-get update ,
选择 ,
js加密 ,
java ,
工作 ,
ocr ,
AngularJs ,
感慨 ,
work ,
click ,
javascript ,
反向代理 ,
ip查询 ,
空间查询 ,
word ,
ECS服务器 ,
centos ,
杂 ,
StartupWMClass ,
前端 ,
js ,
vmdk ,
感概 ,
select2 ,
virtualbox ,
gg代理 ,
share ,
seo ,
风筝 ,
email ,
ASR ,
转换 ,
cool ,
activiti-ui ,
喵小凡 ,
@PropertySource ,
ckeiditor ,
网站攻击 ,
SRILM ,
风景 ,
plugin ,
vdi ,
扩容 ,
chorme ,
阿里云 ,
KALDI ,
num ,
packer2 ,
pic ,
gg镜像 ,
win8.1 ,
ecs ,
mysql ,
Ubuntu ,
快递查询 ,
nginx ,
ubuntu ,
swap ,
maven ,
entropy_avail ,
tencent ,
语音识别 ,
prerender ,
xfce4 ,
进度条 ,
存储过程 ,
activiti ,
熵 ,
日出 ,
练笔 ,
虞美人 ,
nodejs ,
词 ,
demo ,
jquery ,
random ,
linux ,
cat ,
bootstrapValidator ,
angularJs ,
live ,
on ,
gg ,
雪 ,
婚姻 ,
景色 ,
@Autowired ,
pdf ,
emqttd ,
优化 ,
thchs30 ,
opencv ,