公司内部有一套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的更多相关文章

  1. 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

  2. MySQL Replication--修改主键为NULL导致的异常

    测试环境:MySQL 5.5.14/MySQL 5.6.36 测试脚本: create table tb001(id int primary key,c1 int); alter table tb00 ...

  3. MySQL如何永久解决由dos编码格式导致MySQ的显示乱码

    MySQL如何永久解决由dos编码格式导致MySQ的显示乱码 Ⅰ.新建文件 changeCode.txt Ⅱ.粘贴下面代码(作用:将默认的GBK(936)修改为UTF-8(65001)) Window ...

  4. Mysql查询语句使用select.. for update导致的数据库死锁分析

    近期有一个业务需求,多台机器需要同时从Mysql一个表里查询数据并做后续业务逻辑,为了防止多台机器同时拿到一样的数据,每台机器需要在获取时锁住获取数据的数据段,保证多台机器不拿到相同的数据. 我们My ...

  5. 还原MySql数据库失败:max_allowed_packet 设置过小导致记录写入失败

    MySQL根据配置文件会限制Server接受的数据包大小. 有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES ...

  6. MySQL Transaction--事务无法正常回滚导致的异常

    问题表现:系统增删改操作明显变慢(由原来的几十毫秒变为几十秒) 查看未提交事务 ## 查看未提交的事务 ## SELECT p.ID, P.USER, P.HOST, p.DB, P.TIME, T. ...

  7. MySQL Insert语句单个批次数量过多导致的CPU性能问题分析

    [问题] 最近有台服务器比较频繁的CPU报警,表现的特征有CPU sys占比偏高,大量慢查询,大量并发线程堆积.后面开发对insert的相关业务限流后,服务器性能恢复正常. [异常期间线程处理情况] ...

  8. Mysql新增字段到大数据表导致锁表

    昨天晚上7点左右,对一张表进行加字段,大概200多万条记录,字段90多个的大表,结果造成mysql锁表,进而导致服务不可用.执行语句如下: ALTER TABLE `sc_stockout_order ...

  9. mysql数据库大规模数据读写并行时导致的锁表问题

    问题介绍 最近在给学校做的一个项目中,有一个功能涉及到考核分数问题. 我当时一想,这个问题并不是很难,于是就直接采用了这样的方法:拿着一个表中的数据作为索引,去挨个遍历相关表中的数据,最后经过算分的过 ...

随机推荐

  1. Windows CMD命令大全(转)

    Windows CMD命令大全   命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行 ...

  2. Eplan转载

    引言:标准化工程设计理念成功实施后之后,清晰透明的管理流程将水到渠成,过往繁复无比的流程得以简化,管理与被管理者皆愿欣然承受. 市场竞争日趋激烈的今天,对用户需求.市场的快速响应,尽量地控制成本是企业 ...

  3. 用对 gitignore

    使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中.理解 gitignore 的 ...

  4. [PaPaPa][需求说明书][V0.2]

    PaPaPa软件需求说明书V0.2 前   言 经过第一版本的需求说明书之后,我发现博客园不让我把文章发到首页,那么对于这种情况该怎么办呢?我决定立马发布V0.2版本来挑战一下博客园的审核制度,嘿嘿 ...

  5. tcp/ip协议listen函数中backlog参数的含义与php-fpm的502 Bad Gateway

    To understand the backlog argument, we must realize that for a given listening socket, the kernel ma ...

  6. C#创建windows服务并定时执行

    一.创建window服务 1.新建项目-->选择Windows服务.默认生成文件包括Program.cs,Service1.cs 2.在Service1.cs添加如下代码: System.Tim ...

  7. MySQL实现类似Oracle的序列

    MySQL实现类似Oracle的序列 2013-10-22 10:33:35     我来说两句      作者:走过的足迹 收藏    我要投稿 MySQL实现类似Oracle的序列   Oracl ...

  8. 【cs229-Lecture16】马尔可夫决策过程

    之前讲了监督学习和无监督学习,今天主要讲“强化学习”. 马尔科夫决策过程:Markov Decision Process(MDP) 价值函数:value function 值迭代:value iter ...

  9. HIVE: Transform应用实例

    数据文件内容 steven:100;steven:90;steven:99^567^22 ray:90;ray:98^456^30 Tom:81^222^33 期望最终放到数据库的数据格式如下: st ...

  10. IE代理文件自动设置

    想如果代理可用就使用代理,代理不可用就直接连接网络. 新建文件放入javascript代码,保存为proxy.pac,保存路径c:\proxy.pac function FindProxyForURL ...