mysql ALL_O_DIRECT引发的unaligned AIO/DIO导致hang
公司内部有一套mysql环境,使用的是percona server分支(和其他几十套环境的版本、参数完全相同),就这套环境每隔两三天就会hang一次,关键hang的时候服务器cpu也就是百分之三四十,swap也没用多少,磁盘空间这些都足够,mysql.err里也没有任何的异常信息。出现问题后,root登录也没有响应一直卡在那里。。。太奇怪了。。。
因为已经发生三四次了,对项目组影响较大,于是觉得找到根本原因。随后在/var/log/message和dmesg中发现了EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1323274 by mysqld; performance will be poor.
因为ext4默认的页面大小为4096,mysql log的默认大小为512。因为我们设置了参数innodb_flush_method=ALL_O_DIRECT,所以导致了该问题(参见https://bugs.launchpad.net/percona-server/+bug/1033051,http://www.oschina.net/translate/more-about-the-innodb_log_block_size-variable,https://www.percona.com/blog/2011/01/03/effect-from-innodb-log-block-size-4096-bytes/)。
所以决定设置innodb_log_block_size=4096,重启mysql,启动的时候发现出错了。。
2016-08-31 10:18:01 9711 [Note] Plugin 'FEDERATED' is disabled.
InnoDB: Warning: innodb_log_block_size has been changed from default value 512. (###EXPERIMENTAL### operation)
InnoDB: The log block size is set to 4096.
2016-08-31 10:18:01 9711 [Note] InnoDB: Using atomics to ref count buffer pool pages
2016-08-31 10:18:01 9711 [Note] InnoDB: The InnoDB memory heap is disabled
2016-08-31 10:18:01 9711 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2016-08-31 10:18:01 9711 [Note] InnoDB: Memory barrier is not used
2016-08-31 10:18:01 9711 [Note] InnoDB: Compressed tables use zlib 1.2.3
2016-08-31 10:18:01 9711 [Note] InnoDB: Using Linux native AIO
2016-08-31 10:18:01 9711 [Note] InnoDB: Using CPU crc32 instructions
2016-08-31 10:18:01 9711 [Note] InnoDB: Initializing buffer pool, size = 512.0M
2016-08-31 10:18:01 9711 [Note] InnoDB: Completed initialization of buffer pool
2016-08-31 10:18:01 9711 [Note] InnoDB: Highest supported file format is Barracuda.
InnoDB: No valid checkpoint found.
InnoDB: If you are attempting downgrade from MySQL 5.7.9 or later,
InnoDB: please refer to http://dev.mysql.com/doc/refman/5.6/en/upgrading-downgrading.html
InnoDB: If this error appears when you are creating an InnoDB database,
InnoDB: the problem may be that during an earlier attempt you managed
InnoDB: to create the InnoDB data files, but log file creation failed.
InnoDB: If that is the case, please refer to
InnoDB: http://dev.mysql.com/doc/refman/5.6/en/error-creating-innodb.html
2016-08-31 10:18:01 9711 [ERROR] Plugin 'InnoDB' init function returned error.
2016-08-31 10:18:01 9711 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2016-08-31 10:18:01 9711 [ERROR] Unknown/unsupported storage engine: InnoDB
2016-08-31 10:18:01 9711 [ERROR] Aborting
先把旧的ib_log*人工删除了,再重启,成功。
待观察几天看看,是否只有这原因所致。
mysql ALL_O_DIRECT引发的unaligned AIO/DIO导致hang的更多相关文章
- vmware mysql报kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor
kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor
- MySQL Replication--修改主键为NULL导致的异常
测试环境:MySQL 5.5.14/MySQL 5.6.36 测试脚本: create table tb001(id int primary key,c1 int); alter table tb00 ...
- MySQL如何永久解决由dos编码格式导致MySQ的显示乱码
MySQL如何永久解决由dos编码格式导致MySQ的显示乱码 Ⅰ.新建文件 changeCode.txt Ⅱ.粘贴下面代码(作用:将默认的GBK(936)修改为UTF-8(65001)) Window ...
- Mysql查询语句使用select.. for update导致的数据库死锁分析
近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据. 我们My ...
- 还原MySql数据库失败:max_allowed_packet 设置过小导致记录写入失败
MySQL根据配置文件会限制Server接受的数据包大小. 有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES ...
- MySQL Transaction--事务无法正常回滚导致的异常
问题表现:系统增删改操作明显变慢(由原来的几十毫秒变为几十秒) 查看未提交事务 ## 查看未提交的事务 ## SELECT p.ID, P.USER, P.HOST, p.DB, P.TIME, T. ...
- MySQL Insert语句单个批次数量过多导致的CPU性能问题分析
[问题] 最近有台服务器比较频繁的CPU报警,表现的特征有CPU sys占比偏高,大量慢查询,大量并发线程堆积.后面开发对insert的相关业务限流后,服务器性能恢复正常. [异常期间线程处理情况] ...
- Mysql新增字段到大数据表导致锁表
昨天晚上7点左右,对一张表进行加字段,大概200多万条记录,字段90多个的大表,结果造成mysql锁表,进而导致服务不可用.执行语句如下: ALTER TABLE `sc_stockout_order ...
- mysql数据库大规模数据读写并行时导致的锁表问题
问题介绍 最近在给学校做的一个项目中,有一个功能涉及到考核分数问题. 我当时一想,这个问题并不是很难,于是就直接采用了这样的方法:拿着一个表中的数据作为索引,去挨个遍历相关表中的数据,最后经过算分的过 ...
随机推荐
- C#使用ICSharpCode.SharpZipLib.dll压缩文件夹和文件
大家可以到http://www.icsharpcode.net/opensource/sharpziplib/ 下载SharpZiplib的最新版本,本文使用的版本为0.86.0.518,支持Zip, ...
- PHP cURL应用实现模拟登录与采集使用方法详解
对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...
- C2C,B2C,F2C三种电商运营模式的比较
第三方模式(C2C) 销售商模式(B2C) 生产商模式(F2C) 概念及简介 第三方平台提供商模式是电子商务的最原始也是最自然的形式.这种模式一般都是由信息技术开发商负责建立平台,利用平台扩展电子 ...
- java中静态代码块的用法 static用法详解(转)
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...
- java框架篇---spring AOP 实现原理
什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善.OOP引入 ...
- MyBatis知多少(7)持久层
持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其 ...
- C#调用Java类
C#调用Java类 (2011-01-07 14:02:05) 转载▼ 分类: Java学习 1. 在Eclipse中新建名称为hello的java project,此工程仅包含一个文件hell ...
- poj 1474 Video Surveillance - 求多边形有没有核
/* poj 1474 Video Surveillance - 求多边形有没有核 */ #include <stdio.h> #include<math.h> const d ...
- 在JAVA和android中常用的单列模式
在很多开发中,项目为了节约资源,都把一个类的构造函数变为私有化,这样整个项目中就不能创建多个实例,这样的方法我们称为单例模式 现在通过代码来简介下这个单例模式: 在新建一个java项目后,创建一个实体 ...
- publishing failed with multiple errors
背景: 1.使用maven package工程 2. 在eclipse中添加server运行时 publishing failed with multiple errors resource is o ...