mysql 5.7 线程阻塞处理
出现的错误:
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
解决办法:
查看sleep的进程
mysql> show full processlist;
+-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+
| 32579 | official | 127.0.0.1:42690 | official | Sleep | 20926 | | NULL |
| 32715 | erp | 127.0.0.1:2078 | NULL | Sleep | 4570 | | NULL |
| 32716 | erp | 127.0.0.1:2079 | erp | Sleep | 3590 | | NULL |
| 32717 | erp | 127.0.0.1:2080 | erp | Sleep | 3577 | | NULL |
| 32732 | erp | 127.0.0.1:2081 | erp | Sleep | 3590 | | NULL |
| 32733 | erp | 127.0.0.1:2082 | NULL | Sleep | 1412 | | NULL |
| 32734 | erp | 127.0.0.1:2083 | erp | Sleep | 1160 | | NULL |
| 32735 | erp | 127.0.0.1:2084 | erp | Sleep | 985 | | NULL |
| 32736 | erp | 127.0.0.1:2085 | erp | Sleep | 1160 | | NULL |
| 32739 | erp | 127.0.0.1:2088 | erp | Sleep | 695 | | NULL |
| 32740 | erp | 127.0.0.1:2089 | erp | Sleep | 768 | | NULL |
| 32741 | erp | 127.0.0.1:2090 | erp | Sleep | 688 | | NULL |
| 32742 | erp | 127.0.0.1:2091 | erp | Sleep | 686 | | NULL |
| 32743 | erp | 127.0.0.1:2092 | erp | Sleep | 687 | | NULL |
| 32745 | erp | 127.0.0.1:2093 | erp | Sleep | 686 | | NULL |
| 32746 | erp | 127.0.0.1:2094 | erp | Sleep | 686 | | NULL |
| 32763 | root | localhost | erp | Query | 0 | starting | show full processlist |
| 32765 | erp | 127.0.0.1:58216 | erp | Sleep | 18 | | NULL |
| 32766 | erp | 127.0.0.1:58218 | erp | Sleep | 41 | | NULL |
| 32767 | erp | 127.0.0.1:58220 | erp | Sleep | 41 | | NULL |
| 32768 | erp | 127.0.0.1:58222 | erp | Sleep | 41 | | NULL |
| 32769 | erp | 127.0.0.1:58224 | erp | Sleep | 2 | | NULL |
| 32770 | erp | 127.0.0.1:2106 | NULL | Sleep | 153 | | NULL |
| 32771 | erp | 127.0.0.1:2107 | erp | Sleep | 148 | | NULL |
| 32772 | erp | 127.0.0.1:2108 | erp | Query | 18 | updating | UPDATE `erp_user` SET `pwd`='OyUHgt21gTP2/5uFgbKZtq==' WHERE (`id`='10113') |
+-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+
没有看到正在执行的慢SQL记录线程,再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit 或者 rollback而是卡住了,我们需要手动kill掉。
mysql> SELECT * FROM information_schema.INNODB_TRX\G;
*************************** 1. row ***************************
trx_id: 20342
trx_state: RUNNING
trx_started: 2018-01-29 16:48:13
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 4
trx_mysql_thread_id: 32735
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 1
trx_lock_structs: 2
trx_lock_memory_bytes: 1136
trx_rows_locked: 1
trx_rows_modified: 2
trx_concurrency_tickets: 0
trx_isolation_level: REPEATABLE READ
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 10000
trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)
ERROR:
No query specified
看到有这条 32735 的sql,kill掉,执行kill 32735;
kill 32735;
然后再去查询INNODB_TRX表,就没有阻塞的事务sleep线程存在了,如下所示:
mysql> SELECT * FROM information_schema.INNODB_TRX\G;
Empty set (0.00 sec)
现在可以正常执行 sql 语句了
mysql 5.7 线程阻塞处理的更多相关文章
- MySQL MySql连接数与线程池
MySql连接数与线程池 by:授客 QQ:1033553122 连接数 1. 查看允许的最大并发连接数 SHOW VARIABLES LIKE 'max_connections'; 2. 修改最 ...
- java线程阻塞问题排查方法
我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题.今天终于了了这个心结.把解决过程总结下和大家分享. 首先用jstack命令打出这个进程的全部线程堆栈.拿到线程dump文件之后,搜索 ...
- 【Javascript】解决Ajax轮询造成的线程阻塞问题(过渡方案)
一.背景 开发Web平台时,经常会需要定时向服务器轮询获取数据状态,并且通常不仅只开一个轮询,而是根据业务需要会产生数个轮询.这种情况下,性能低下的Ajax长轮询已经不能满足需求,频繁的访问还会造成线 ...
- java并发编程(四)守护进程 线程阻塞的四种情况
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17099981 守护线程 Java中有两类线程:User Thread(用户线程).Da ...
- jQuery同步Ajax带来的UI线程阻塞问题及解决办法
俗话说不作死就不会死,今天作死了一回,写了一个比较二逼的函数,遇到了同步Ajax引起的UI线程阻塞问题,在此记录一下. 事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则 ...
- CountDownLatch线程阻塞用法实例
在编写多线程的工作中,有个常见的问题:主线程(main) 启动好几个子线程(task)来完成并发任务,主线程要等待所有的子线程完成之后才继续执行main的其它任务. 默认主线程退出时其它子线程不会停, ...
- 【性能诊断】七、并发场景的性能分析(windbg案例,线程阻塞)
简单整理一个测试Demo,抓取dump并验证,步骤如下: Symbol File Path:SRV*C:\Symbols*http://msdl.microsoft.com/download/symb ...
- Android Studio学习随笔-UI线程阻塞以及优化
我们在使用手机的时候,经常会遇到一个问题:先是卡死,然后跳出该程序无响应,是否关闭的提示(当然有可能是我们手机性能太差=.=)这是因为线程的阻塞引起的,在这里我讲述一下UI线程,一般处理程序会在UI线 ...
- JAVA并发实现四(守护线程和线程阻塞)
守护线程 Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台 ...
随机推荐
- C语言小程序——推箱子(窄字符和宽字符)
C语言小程序——推箱子(窄字符Version) 推箱子.c #include <stdio.h> #include <conio.h> #include <stdlib. ...
- NLP常用术语解析
分词(Segment):中英文都存在分词的问题,不过相对来说,英文单词与单词之间本来就有空格进行分割,所以处理起来相对方便.但是中文书写是没有分隔符的,所以分词的问题就比较突出.分词常用的手段可以是基 ...
- Java 命令行启动时指定配置文件目录
java -jar -Xbootclasspath/a:/home/tms/conf /home/tms/bin/S17-tms.jar 先指定配置文件目录: 再指定jar包路径: 运行clas ...
- iOS-关于缓存【SDImageCache】Image,一直刷新UIImageView内存一直增加问题
最近做的一个项目,里面有这样一个需求,在一个页面,用一个UIImageView不停的刷新显示图片,图片可能会重复显示:图片是从服务器下载下来的data流,data转UIimage系统的方法: UIIm ...
- centos7 安装oracle11g
创建数据库的系统用户和用户组 $ su root #切换到root # groupadd oinstall #创建用户组oinstall # groupadd dba #创建用户组dba # user ...
- js设计模式小结
1 构造函数模式 var Person = function(name){ this.name = name; this.getName = function(){ console.log(this. ...
- (转)Linux开启路由转发功能
原文:https://www.linuxidc.com/Linux/2016-12/138661.htm 标记一下,今天想让一台Red Hat Enterprise Linux 7开通iptables ...
- 服务端如何安全获取客户端请求IP地址
服务端如何获取客户端请求IP地址,网上代码一搜一大把.其中比较常见有x-forwarded-for.client-ip等请求头,及remote_addr参数,那么为什么会存在这么多获取方式,以及到底怎 ...
- SSM整合(四)-整合后配置文件汇总
1.新建Maven项目创建pom.xml pom.xml内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...
- rest规范是什么?
请参考这篇文章,每一个回答者侧重点不同,但都十分精彩 https://www.zhihu.com/question/28557115