出现的错误:

ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction

解决办法:

查看sleep的进程

  1. mysql> show full processlist;
  2. +-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+
  3. | Id | User | Host | db | Command | Time | State | Info |
  4. +-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+
  5. | 32579 | official | 127.0.0.1:42690 | official | Sleep | 20926 | | NULL |
  6. | 32715 | erp | 127.0.0.1:2078 | NULL | Sleep | 4570 | | NULL |
  7. | 32716 | erp | 127.0.0.1:2079 | erp | Sleep | 3590 | | NULL |
  8. | 32717 | erp | 127.0.0.1:2080 | erp | Sleep | 3577 | | NULL |
  9. | 32732 | erp | 127.0.0.1:2081 | erp | Sleep | 3590 | | NULL |
  10. | 32733 | erp | 127.0.0.1:2082 | NULL | Sleep | 1412 | | NULL |
  11. | 32734 | erp | 127.0.0.1:2083 | erp | Sleep | 1160 | | NULL |
  12. | 32735 | erp | 127.0.0.1:2084 | erp | Sleep | 985 | | NULL |
  13. | 32736 | erp | 127.0.0.1:2085 | erp | Sleep | 1160 | | NULL |
  14. | 32739 | erp | 127.0.0.1:2088 | erp | Sleep | 695 | | NULL |
  15. | 32740 | erp | 127.0.0.1:2089 | erp | Sleep | 768 | | NULL |
  16. | 32741 | erp | 127.0.0.1:2090 | erp | Sleep | 688 | | NULL |
  17. | 32742 | erp | 127.0.0.1:2091 | erp | Sleep | 686 | | NULL |
  18. | 32743 | erp | 127.0.0.1:2092 | erp | Sleep | 687 | | NULL |
  19. | 32745 | erp | 127.0.0.1:2093 | erp | Sleep | 686 | | NULL |
  20. | 32746 | erp | 127.0.0.1:2094 | erp | Sleep | 686 | | NULL |
  21. | 32763 | root | localhost | erp | Query | 0 | starting | show full processlist |
  22. | 32765 | erp | 127.0.0.1:58216 | erp | Sleep | 18 | | NULL |
  23. | 32766 | erp | 127.0.0.1:58218 | erp | Sleep | 41 | | NULL |
  24. | 32767 | erp | 127.0.0.1:58220 | erp | Sleep | 41 | | NULL |
  25. | 32768 | erp | 127.0.0.1:58222 | erp | Sleep | 41 | | NULL |
  26. | 32769 | erp | 127.0.0.1:58224 | erp | Sleep | 2 | | NULL |
  27. | 32770 | erp | 127.0.0.1:2106 | NULL | Sleep | 153 | | NULL |
  28. | 32771 | erp | 127.0.0.1:2107 | erp | Sleep | 148 | | NULL |
  29. | 32772 | erp | 127.0.0.1:2108 | erp | Query | 18 | updating | UPDATE `erp_user` SET `pwd`='OyUHgt21gTP2/5uFgbKZtq==' WHERE (`id`='10113') |
  30. +-------+----------+-------------------+----------+---------+-------+----------+-----------------------------------------------------------------------------+

没有看到正在执行的慢SQL记录线程,再去查看innodb的事务表INNODB_TRX,看下里面是否有正在锁定的事务线程,看看ID是否在show full processlist里面的sleep线程中,如果是,就证明这个sleep的线程事务一直没有commit 或者 rollback而是卡住了,我们需要手动kill掉。

  1. mysql> SELECT * FROM information_schema.INNODB_TRX\G;
  2. *************************** 1. row ***************************
  3. trx_id: 20342
  4. trx_state: RUNNING
  5. trx_started: 2018-01-29 16:48:13
  6. trx_requested_lock_id: NULL
  7. trx_wait_started: NULL
  8. trx_weight: 4
  9. trx_mysql_thread_id: 32735
  10. trx_query: NULL
  11. trx_operation_state: NULL
  12. trx_tables_in_use: 0
  13. trx_tables_locked: 1
  14. trx_lock_structs: 2
  15. trx_lock_memory_bytes: 1136
  16. trx_rows_locked: 1
  17. trx_rows_modified: 2
  18. trx_concurrency_tickets: 0
  19. trx_isolation_level: REPEATABLE READ
  20. trx_unique_checks: 1
  21. trx_foreign_key_checks: 1
  22. trx_last_foreign_key_error: NULL
  23. trx_adaptive_hash_latched: 0
  24. trx_adaptive_hash_timeout: 10000
  25. trx_is_read_only: 0
  26. trx_autocommit_non_locking: 0
  27. 1 row in set (0.00 sec)
  28. ERROR:
  29. No query specified

看到有这条 32735 的sql,kill掉,执行kill 32735;

  1. kill 32735;

然后再去查询INNODB_TRX表,就没有阻塞的事务sleep线程存在了,如下所示:

  1. mysql> SELECT * FROM information_schema.INNODB_TRX\G;
  2. 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. C语言小程序——推箱子(窄字符和宽字符)

    C语言小程序——推箱子(窄字符Version) 推箱子.c #include <stdio.h> #include <conio.h> #include <stdlib. ...

  2. NLP常用术语解析

    分词(Segment):中英文都存在分词的问题,不过相对来说,英文单词与单词之间本来就有空格进行分割,所以处理起来相对方便.但是中文书写是没有分隔符的,所以分词的问题就比较突出.分词常用的手段可以是基 ...

  3. Java 命令行启动时指定配置文件目录

    java -jar -Xbootclasspath/a:/home/tms/conf    /home/tms/bin/S17-tms.jar 先指定配置文件目录: 再指定jar包路径: 运行clas ...

  4. iOS-关于缓存【SDImageCache】Image,一直刷新UIImageView内存一直增加问题

    最近做的一个项目,里面有这样一个需求,在一个页面,用一个UIImageView不停的刷新显示图片,图片可能会重复显示:图片是从服务器下载下来的data流,data转UIimage系统的方法: UIIm ...

  5. centos7 安装oracle11g

    创建数据库的系统用户和用户组 $ su root #切换到root # groupadd oinstall #创建用户组oinstall # groupadd dba #创建用户组dba # user ...

  6. js设计模式小结

    1 构造函数模式 var Person = function(name){ this.name = name; this.getName = function(){ console.log(this. ...

  7. (转)Linux开启路由转发功能

    原文:https://www.linuxidc.com/Linux/2016-12/138661.htm 标记一下,今天想让一台Red Hat Enterprise Linux 7开通iptables ...

  8. 服务端如何安全获取客户端请求IP地址

    服务端如何获取客户端请求IP地址,网上代码一搜一大把.其中比较常见有x-forwarded-for.client-ip等请求头,及remote_addr参数,那么为什么会存在这么多获取方式,以及到底怎 ...

  9. SSM整合(四)-整合后配置文件汇总

    1.新建Maven项目创建pom.xml pom.xml内容如下 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...

  10. rest规范是什么?

    请参考这篇文章,每一个回答者侧重点不同,但都十分精彩 https://www.zhihu.com/question/28557115