MySQL因为hung住,自动重新启动,InnoDB: Semaphore wait has lasted > 600 seconds

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 从错误日志中检查,有两个信号量等待时间超长,MySQL自动crash了

从错误日志中检查,有两个信号量等待时间超长,MySQL自动crash了:

# grep " 600 " 31-226-mysql-error.log 
2021-12-27T02:25:15.086231Z 0 [ERROR] [FATAL] InnoDB: Semaphore wait has lasted > 600 seconds. We intentionally crash the server because it appears to be hung.
2021-12-27T03:22:41.057752Z 0 [ERROR] [FATAL] InnoDB: Semaphore wait has lasted > 600 seconds. We intentionally crash the server because it appears to be hung.
# grep "ready for connections" 31-226-mysql-error.log 
2021-12-27T02:57:54.430405Z 0 [Note] /usr/sbin/mysqld: ready for connections.
2021-12-27T04:01:35.813766Z 0 [Note] /usr/sbin/mysqld: ready for connections.


srv_error_monitor_thread发现存在阻塞超过600s的latch锁时,如果连续多次检测该锁仍没有释放,就会触发自动crash,避免MySQL持续hung住。

检查等待信息量时间长的线程有3个:


# grep "Thread 140487646721792 " 31-226-mysql-error.log 
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 241  seconds the semaphore:
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 244  seconds the semaphore:
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 264  seconds the semaphore:
......
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 923  seconds the semaphore:
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 924  seconds the semaphore:
--Thread 140487646721792 has waited at buf0buf.cc line 3975 for 944  seconds the semaphore:
# grep "Thread 140487338841856" 31-226-mysql-error.log 
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 241  seconds the semaphore:
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 244  seconds the semaphore:
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 264  seconds the semaphore:
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 272  seconds the semaphore:
.......
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 923  seconds the semaphore:
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 924  seconds the semaphore:
--Thread 140487338841856 has waited at buf0buf.cc line 3975 for 944  seconds the semaphore:


# grep "Thread 140487643309824" 31-226-mysql-error.log 
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 241  seconds the semaphore:
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 244  seconds the semaphore:
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 264  seconds the semaphore:
......
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 923  seconds the semaphore:
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 924  seconds the semaphore:
--Thread 140487643309824 has waited at buf0buf.cc line 3975 for 944  seconds the semaphore:


这3个线程都出现了58次等待信号量,查询系统的信号量:

# cat /proc/sys/kernel/sem
250 32000 32  128


说明:

第一列,表示每个信号集中的最大信号量数目。

第二列,表示系统范围内的最大信号量总数目。

第三列,表示每个信号发生时的最大系统操作数目。

第四列,表示系统范围内的最大信号集总数目。


增大信号量只能治标,不治本,实际上还是数据库中有效率底下的SQL语句,优化SQL才是正解!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
存储 关系型数据库 MySQL
MySQL InnoDB数据存储结构
MySQL InnoDB数据存储结构
|
1月前
|
存储 缓存 关系型数据库
MySQL的varchar水真的太深了——InnoDB记录存储结构
varchar(M) 能存多少个字符,为什么提示最大16383?innodb怎么知道varchar真正有多长?记录为NULL,innodb如何处理?某个列数据占用的字节数非常多怎么办?影响每行实际可用空间的因素有哪些?本篇围绕innodb默认行格式dynamic来说说原理。
828 6
MySQL的varchar水真的太深了——InnoDB记录存储结构
|
2月前
|
存储 缓存 关系型数据库
MySQL - 存储引擎MyISAM和Innodb
MySQL - 存储引擎MyISAM和Innodb
|
6天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
16 0
|
2月前
|
存储 SQL 关系型数据库
Mysql专栏 - mysql、innodb存储引擎、binlog的工作流程
Mysql专栏 - mysql、innodb存储引擎、binlog的工作流程
73 0
|
3月前
|
存储 算法 关系型数据库
MySQL相关(八)- innodb行级锁深入剖析
MySQL相关(八)- innodb行级锁深入剖析
43 0
|
3月前
|
存储 算法 关系型数据库
MySQL相关(七)- innodb 锁的介绍及使用
MySQL相关(七)- innodb 锁的介绍及使用
28 0
|
9天前
|
关系型数据库 MySQL 数据库
mysql卸载、下载、安装(window版本)
mysql卸载、下载、安装(window版本)
|
1月前
|
关系型数据库 MySQL 数据库连接
关于MySQL-ODBC的zip包安装方法
关于MySQL-ODBC的zip包安装方法
|
28天前
|
关系型数据库 MySQL 数据库
rds安装数据库客户端工具
安装阿里云RDS的数据库客户端涉及在本地安装对应类型(如MySQL、PostgreSQL)的客户端工具。对于MySQL,可选择MySQL Command-Line Client或图形化工具如Navicat,安装后输入RDS实例的连接参数进行连接。对于PostgreSQL,可以使用`psql`命令行工具或图形化客户端如PgAdmin。首先从阿里云控制台获取连接信息,然后按照官方文档安装客户端,最后配置客户端连接以确保遵循安全指引。
80 1

推荐镜像

更多