出现的错误:

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. 微服务日志之.NET Core使用NLog通过Kafka实现日志收集

    一.前言 NET Core越来越受欢迎,因为它具有在多个平台上运行的原始.NET Framework的强大功能.Kafka正迅速成为软件行业的标准消息传递技术.这篇文章简单介绍了如何使用.NET(Co ...

  2. MFC TabCtrl 控件修改标签尺寸

    注意:无论那种方法,都要先设置Tab控件的Style属性为fixed width. 第一种方法 MFC,tabcontrol控件改变标签大小 - CSDN博客 https://blog.csdn.ne ...

  3. 7.ViewPagerIndicator

     ViewPager指针项目,在使用ViewPager的时候能够指示ViewPager所在的位置,就像Google Play中切换的效果一样,还能使用在应用初始化的介绍页面</item> ...

  4. Baidu WebUploader 前端文件上传组件的使用

    简介 WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件.在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流I ...

  5. ElasticSearch 工具类封装(基于ElasticsearchTemplate)

    1.抽象接口定义 public abstract class SearchQueryEngine<T> { @Autowired protected ElasticsearchTempla ...

  6. Qt之实现360安全卫士主界面代码开源

    匆匆一年又过去了,总结去年一年的节奏就是忙爆了:生活忙.工作忙,值得庆幸的是没有瞎忙:今天打开博客园查看我的博客,才发现几乎差不多一年时间没写博客了:博客文章就是记忆,就是曾经努力过的见证,感谢博客园 ...

  7. PCIE 2.0协议概念基本科普

    PCIE的概念:是电脑总线PCI的一种,它沿用现有的PCI编程概念及通信标准,但建基于更快的串行通信系统. 英特尔是该接口的主要支持者.PCIe仅应用于内部互连.由于PCIe是基于现有的PCI系统,只 ...

  8. 使用autogen工具生成Makefile遇到问题解决思路

    使用autogen工具生成Makefile,最新的应用程序很多都使用autogen,本着知行合一的精神 最近有空也研究了一下该工具的使用,详细步骤请参考文档: http://blog.csdn.net ...

  9. Django model select的各种用法详解

    <Django model update的各种用法介绍>文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的用 ...

  10. Linux内核源码分析之调度、内核线程模型 And Centos7.2's Kernel Resource Analysis

    本文分为概述.历史.el7.2代码架构图解三部分. 解决的问题: a.Kernel调度发展过程: b.以架构图的方式,详解el7.2具体调度实现.内核线程模型.调度时间片计算,以及探究整个Kernel ...