出现的错误:

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 线程阻塞处理的更多相关文章

  1. MySQL MySql连接数与线程池

    MySql连接数与线程池 by:授客 QQ:1033553122 连接数 1.  查看允许的最大并发连接数 SHOW VARIABLES LIKE 'max_connections'; 2.  修改最 ...

  2. java线程阻塞问题排查方法

    我开发的worker,每隔几个月线上都会阻塞一次,一直都没查出问题.今天终于了了这个心结.把解决过程总结下和大家分享. 首先用jstack命令打出这个进程的全部线程堆栈.拿到线程dump文件之后,搜索 ...

  3. 【Javascript】解决Ajax轮询造成的线程阻塞问题(过渡方案)

    一.背景 开发Web平台时,经常会需要定时向服务器轮询获取数据状态,并且通常不仅只开一个轮询,而是根据业务需要会产生数个轮询.这种情况下,性能低下的Ajax长轮询已经不能满足需求,频繁的访问还会造成线 ...

  4. java并发编程(四)守护进程 线程阻塞的四种情况

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17099981 守护线程   Java中有两类线程:User Thread(用户线程).Da ...

  5. jQuery同步Ajax带来的UI线程阻塞问题及解决办法

    俗话说不作死就不会死,今天作死了一回,写了一个比较二逼的函数,遇到了同步Ajax引起的UI线程阻塞问题,在此记录一下. 事情起因是这样的,因为页面上有多个相似的异步请求动作,本着提高代码可重用性的原则 ...

  6. CountDownLatch线程阻塞用法实例

    在编写多线程的工作中,有个常见的问题:主线程(main) 启动好几个子线程(task)来完成并发任务,主线程要等待所有的子线程完成之后才继续执行main的其它任务. 默认主线程退出时其它子线程不会停, ...

  7. 【性能诊断】七、并发场景的性能分析(windbg案例,线程阻塞)

    简单整理一个测试Demo,抓取dump并验证,步骤如下: Symbol File Path:SRV*C:\Symbols*http://msdl.microsoft.com/download/symb ...

  8. Android Studio学习随笔-UI线程阻塞以及优化

    我们在使用手机的时候,经常会遇到一个问题:先是卡死,然后跳出该程序无响应,是否关闭的提示(当然有可能是我们手机性能太差=.=)这是因为线程的阻塞引起的,在这里我讲述一下UI线程,一般处理程序会在UI线 ...

  9. JAVA并发实现四(守护线程和线程阻塞)

    守护线程     Java中有两类线程:User Thread(用户线程).Daemon Thread(守护线程) 用户线程即运行在前台的线程,而守护线程是运行在后台的线程. 守护线程作用是为其他前台 ...

随机推荐

  1. 【接口时序】7、VGA接口原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1. FPGA型号:Xilinx公 ...

  2. 什么是CDN及CDN加速原理

    目录 CDN是什么? CDN的相关技术 负载均衡技术 动态内容分发与复制技术 缓存技术 谁需要CDN? CDN的不足 随着互联网的发展,用户在使用网络时对网站的浏览速度和效果愈加重视,但由于网民数量激 ...

  3. JavaScript学习之路-为什么要学习JavaScript语法

    版权声明:未经博主允许不得转载 前言 为什么要学习JavaScript语法,没有理由,因为工作需要,也为了成为全栈,那现在还是好好努力学习吧! 发展 说实话,JavaScript很好学也很重要,也很容 ...

  4. Android开发工程师文集-提示框,菜单,数据存储,组件篇

    提示框,菜单,数据存储,组件篇 Toast Toast.makeText(context, text, 时间).show(); setDuration();//设置时间 setGravity();// ...

  5. 《http权威指南》读书笔记3

    概述 最近对http很感兴趣,于是开始看<http权威指南>.别人都说这本书有点老了,而且内容太多.我个人觉得这本书写的太好了,非常长知识,让你知道关于http的很多概念,不仅告诉你怎么做 ...

  6. PHP利用Session实现上传进度

    实现文件上传进度条基本是依靠JS插件或HTML5的File API来完成,其实PHP配合ajax也能实现此功能. PHP手册对于session上传进度是这么介绍的: 当 session.upload_ ...

  7. Ubuntu 16.04 安装 arm-linux-gcc 交叉编译工具

    工作需要,最近在编译linux嵌入式内核时,需要安装arm-linux-gcc交叉编译,实际上,安装这个交叉编译器的难度没啥.不过,这里有些问题还是值得我去思考和记录下来的. 这个系统的上的编译器用的 ...

  8. tf.cast()的用法(转)

    一.函数 tf.cast() cast( x, dtype, name=None ) 将x的数据格式转化成dtype.例如,原来x的数据格式是bool, 那么将其转化成float以后,就能够将其转化成 ...

  9. EF code first,set composite primary key 复合key问题

    环境: EF core 2.0 Net core 2.0 错误: 因实体定义了多个key,打开数据库时程序报以下错误 An unhandled exception occurred while pro ...

  10. HP服务器设置iLO步凑

    HP服务器设置iLO步凑 1.开机出现界面—按下F11进入Boot Menu: 2.选择Generic USB Boot回车: 3.选择System Configuration回车: 4.选择iLO ...