背景: 1.有一个定时任务,每10分钟入一批统计数据: 2.另一个定时任务,每天定时清理7天前数据,此定时任务每天01:18:00执行: 现象: 每天01:20:00的统计数据入库失败,异常信息如下,其他时间点均无问题: 分析: 1.按异常信息显示,插入数据时,等待锁超时,mysql事务锁等待时间默认为50秒,出现此问题,说明向此表写入数据时,有其他线程将表锁住了. 2.每天只在01:20:00的统计时,等待锁超时,而其他时间点没有问题,怀疑与定时任务有关. 3.搜索代码,每天01:20:00左…
昨晚我正在床上睡得着着的,突然来了一条短信. 什么?线上的订单无法取消! 我赶紧登录线上系统,查看业务日志. 发现有MySQL锁超时的错误日志. 不用想,肯定有另一个事务正在修改这条订单,持有这条订单的锁. 导致当前事务获取不到锁,一直等待,直到超过锁超时时间,然后报错. 既然问题已经清楚了,接下来就轮到怎么排查一下到底是哪个事务正在持有这条订单的锁. 好在MySQL提供了丰富的工具,帮助我们排查锁竞争问题. 现场复现一个这个问题: 创建一张用户表,造点数据: CREATE TABLE `use…
Bulk异常引发的Elasticsearch内存泄漏 2018年8月24日更新: 今天放出的6.4版修复了这个问题. 前天公司度假部门一个线上ElasticSearch集群发出报警,有Data Node的Heap使用量持续超过80%警戒线. 收到报警邮件后,不敢怠慢,立即登陆监控系统查看集群状态.还好,所有的结点都在正常服务,只是有2个结点的Heap使用率非常高.此时,Old GC一直在持续的触发,却无法回收内存.   Heap Used % 初步排查 问题结点的Heap分配了30GB,80%的…
mysql 事务锁超时时间 innodb_lock_wait_timeout: # 查询全局等待事务锁超时时间 SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; # 设置全局等待事务锁超时时间 SET GLOBAL innodb_lock_wait_timeout=; # 查询当前会话等待事务锁超时时间 SHOW VARIABLES LIKE 'innodb_lock_wait_timeout';…
最近有一个困惑,生产服务器上有一表索引建得乱七八糟,经过整理后需要新建几个索引,再删除几个索引,建立索引时使用联机(ONLINE=ON)创建,查看下服务器负载(磁盘和CPU压力均比较低的情况)后就选择业务时间创建,但是到删除索引时却遇到问题:阻塞,删除索引需要架构修改锁(SCH_M),有阻塞很正常,虽然查询使用NOLOCK提示降低了对其他会话的影响,但还是会在页或表上生成一些意向共享锁(IS),这些意向共享锁与SCH_M无法兼容,因此阻塞无可避免,悲催的是在该表上多个会话重复执行查询且该查询执行…
Background kubernetes是master-slave结构,master node是集群的大脑, 当master node发生故障时整个集群都"out of control".master node中最重要的当属apiserver组件, 它负责处理所有请求, 并持久化状态到etcd. 一般我们会部署多份apiserver实现高可用.官方建议在多个apiserver前面部署一个LB进行负载均衡,当其中一台apiserver发生故障之后,LB 自动将流量切换到其他实例上面.这…
对一个别人正在读写的表执行DDL操作,经常需要先锁表,但是这个表正在被人执行读写操作,那么就会报:Lock wait timeout 类的错误. 通过MDB实例详情页面的进程管理可以看到类似如下的情况,某个sql查询耗时超过了30分钟还没执行完,这个时候再对这个表执行ddl操作,肯定就会提示锁超时的错误了. 当然,我们也可以自己使用mysql客户端登录,show processlist查看进程信息(可以通过设置pager过滤:pager grep -iv sleep). 处理办法: 1.等待正在…
一.前言 关于redis分布式锁, 查了很多资料, 发现很多只是实现了最基础的功能, 但是, 并没有解决当锁已超时而业务逻辑还未执行完的问题, 这样会导致: A线程超时时间设为10s(为了解决死锁问题), 但代码执行时间可能需要30s, 然后redis服务端10s后将锁删除, 此时, B线程恰好申请锁, redis服务端不存在该锁, 可以申请, 也执行了代码, 那么问题来了, A.B线程都同时获取到锁并执行业务逻辑, 这与分布式锁最基本的性质相违背: 在任意一个时刻, 只有一个客户端持有锁, 即…
WebSphere中数据源连接池太小导致的连接超时错误记录. 应用连接超时错误信息: [// ::: CST] webapp E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[ServletNameNotFound]: org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot o…
1. 问题背景 上周线上某模块出现锁等待超时,如下图所示: 我虽然不是该模块负责人,但出于好奇,也一起帮忙排查定位问题. 这里的业务背景就是在执行到某个地方时,需要去表中插入一批数据,这批数据需要根据数据类型分配流水号.这与我的select for update引发死锁分析提到的流水号分配差不多:通过数据库悲观锁实现多实例部署的流水号生成与分配. 2. 问题排查 那么需要排查的问题很简单,为什么获取流水号的时候会发生锁等待超时? 从上面截图中的异常栈中,我们也可以看出:首先进入了带有@Trans…