InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts_hxpjava1的博客-程序员信息网

技术标签: mysql  

在一台服务器中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用。
之前运行一直没有问题(最多的时候有23个MySQL实例同时运行),后来新配置了一台服务器,启动其对应的实例时失败。

部分错误日志如下:
……
140505 16:05:59 InnoDB: Using Linux native AIO
140505 16:05:59  InnoDB: Warning: io_setup() failed with EAGAIN. Will make 5 attempts before giving up.
InnoDB: Warning: io_setup() attempt 1 failed.
InnoDB: Warning: io_setup() attempt 2 failed.
InnoDB: Warning: io_setup() attempt 3 failed.
InnoDB: Warning: io_setup() attempt 4 failed.
InnoDB: Warning: io_setup() attempt 5 failed.
140505 16:06:02  InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts.
InnoDB: You can disable Linux Native AIO by setting innodb_use_native_aio = 0 in my.cnf
140505 16:06:02 InnoDB: Fatal error: cannot initialize AIO sub-system
140505 16:06:02 [ERROR] Plugin 'InnoDB' init function returned error.
140505 16:06:02 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
140505 16:06:02 [ERROR] Unknown/unsupported storage engine: InnoDB
……

通过错误日志了解到最早发生错误的地方为 InnoDB: Error: io_setup() failed with EAGAIN after 5 attempts。
这个io_setup() failed with EAGAIN是关键。

我们man一下io_setup
NAME
       io_setup - Create an asynchronous I/O context
……
DESCRIPTION
       io_setup()  creates  an asynchronous I/O context capable of receiving at least maxevents.  ctxp must not point to an AIO context that already exists, and must be 
initialized to 0
       prior to the call.  On successful creation of the AIO context, *ctxp is filled in with the resulting handle.
RETURN VALUE
       io_setup() returns 0 on success; otherwise, one of the errors listed in the "Errors" section is returned.
ERRORS
       EINVAL ctxp is not initialized, or the specified maxevents exceeds internal limits. maxevents should be greater than 0.
       EFAULT An invalid pointer is passed for ctxp.
       ENOMEM Insufficient kernel resources are available.
       EAGAIN The specified maxevents exceeds the user’s limit of available events.
       ENOSYS io_setup() is not implemented on this architecture.
CONFORMING TO
……
看到io_setup用来创建异步I/O上下文环境用于特定目的,错误代码EAGAIN意为指定的maxevents 超出了用户可用events的限制。
该服务器上已经运行了较多的MySQL实例,创建异步I/O的资源已经达到了临界,所以新的实例启动失败。

最后通过在启动MySQL实例时加入 --innodb_use_native_aio = 0解决了问题。


也有通过更改系统设置来解决此问题的(待验证)。
cat /proc/sys/fs/aio-max-nr可以查看到当前的aio-max-nr的值一般为65536(64k个)

可通过下述步骤改变该文件中的值(上述文件不能直接编辑)
sudo vim /etc/sysctl.conf
修改或加入
fs.aio-max-nr=262144(256k个)

执行命令修改/proc/sys/fs/aio-max-nr
sysctl -p

可以看到/proc/sys/fs/aio-max-nr中的值发生了变化
cat /proc/sys/fs/aio-max-nr

重启MySQL实例

还有通过修改mysql源码来避免该问题的,但一般情况下不推荐也没有必要这么做。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hxpjava1/article/details/80730518

智能推荐

JAVA中的方法 /数组基本详记_ジ北陌え生的博客-程序员信息网

一 方法二 数组一 方法: 将一个独立的代码块{}抽取出来并为当前这个起名字! 作用:提高代码的复用性1.方法的概念: 使用{}将代码包裹起来,并给这个代码起一个名字:方法名---->以后直接使用方法名调用. {}代码块 如何定义方法?两种: 有返回值类型的方法的定义 没有返回值类型的方法定义a.第一种:有返回值类型的方法的定义 固定格式: public static 返回值类型 方法名(形式参数类型1 参数名称1,形式参数类型2 参数名称2...){ 业

Sequence Modeling With CTC : Labelling Unsegmented Sequence Data with RNN_ZYNORL的博客-程序员信息网

许多真实世界的序列学习任务需要从嘈杂的、未分割的输入数据中预测标签序列。例如,在语音识别中,一个声音信号被转录成单词或子单词单位。递归神经网络(RNNs)是一种功能强大的序列学习者,似乎很适合这类任务。但是,由于它们需要预先分割训练数据,并经过后处理将其输出转化为标签序列,因此目前其适用性有限。Alex Graves等人提出了一种训练神经网络标记未分割序列的新方法CTC (Connectionist Temporal Classification)以标记未分割的序列数据。

fastjson 序列化 不包括转义字符_用签名保护你的隐私(3)-URL安全序列化_weixin_39687621的博客-程序员信息网

在网络上进行数据传输是不安全的,必须的防止数据的伪造和篡改,特别是在web开发中使用GET传参的时候就更加要考虑这种需求,但GET传参是通过URL传参的,只能使用ASCII码,Itsdangerous模块中的URL安全序列化正好满足这种字符受限的情况。URL安全序列化包括以下两个类:URLSafeSerializerURLSafeTimedSerializer1.URLSafeSerializer...

适马20mm F2 DG DN 评测_m0_58402844的博客-程序员信息网

适马超广角镜头 20mm F2 DG DN,官方称这是一款针对无反相机设计的高品质紧凑型定焦镜头,同时也是适马 I 系列产品线的最新成员,实现了 F2 大光圈、20mm 的超广视角和令人惊叹的光学性能。适马20mm F2 DG DN更多使用评价和感受:http://www.adiannao.cn/dn适马表示,这是第四款具有 F2 光圈的 I 系列镜头,加入了 24mm、35mm 和 65mm 的阵营,且适配 L 卡口和索尼 E 卡口。20mm F2 DG DN 丨 Contemporary 外形小巧,

学习大数据开发需要读的书籍有哪些?大数据开发书籍推荐介绍_科多兽兽的博客-程序员信息网

学习大数据少不了平时的技术经验的积累,只有不断的积累才能在熟能生巧中精益求精。今天向大家推荐一批大数据书籍,大家可以在业余的时候阅读,加深对大数据的了解,分享给大家看看~1.数据之巅内容简介: 在《数据之巅》这本书中,从小数据时代到大数据的崛起,作者以宏大的历史观、文化观、大数据观,给我们描绘了一幅数据科学、智慧文化的全景图。全书从美国建国之基讲起,通过阐述初数时代、内战时代、镀金时代...

随便推点

selenium-selenium元素操作汇总(值得收藏)_蓝天下的风的博客-程序员信息网

selenium元素操作(一)、xpath复杂元素定位 # 1、//标签名[@属性名称=属性值] * 匹配所有 # 2、逻辑运算 and or //标签名[@属性名称=属性值 and 属性名称=属性值] # 3、元素的文本内容 //标签名[text()="元素的文本内容"] # 文本内容完全匹配 # 4、部分匹配:文本内容/属性值 contains(...

计算机网络常见面试题(大全)_有输出才有进步的博客-程序员信息网_计算机网络面试题

1 http,https 区别http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。 http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。2 https原理(输入一个网址,到响...

VPP 安装配置工具vpp-config_rtoax的博客-程序员信息网_vpp配置

目录摘要用注意事项对于开发人员上载到PyPi例子:显示系统安装VPP空跑应用配置显示系统(配置后)设定IP位址摘要VPP配置实用程序的目的是允许用户以简单安全的方式配置VPP。该实用程序从用户那里获取输入,然后修改密钥配置文件。然后,用户可以检查这些文件以确保它们是正确的,然后实际应用配置。该实用程序还包括安装实用程序和一些基本测试。该实用程序当前随版本17.10一起发布。用VPP配置实用程序的安装和执行非常简单。首先安装python pip模

国内最全的android软件商店 应用市场 汇总_安迪潘的博客-程序员信息网_目前最好的安卓应用市场

 2010年在国内出现了Android系统智能机的大规模发展,而应用商城也在火拼起来,下面我推荐一下国内Android的免费软件商城。开始吧:迈奔灵动(mAPPn)机锋市场 海量Android资源兼容并蓄 机锋市场提供了超过5000款本地Android中文应用软件,最新版本支持Google Market数以万计的资源搜索与直接下载,绝对是你一站式的手机应用伴侣! 丰

自定义Realm实现认证_levonmo的博客-程序员信息网

一般自定义Realm继承AuthorizingRealm接口,当执行subject.login()时,程序就会将token传到自定义的Realmpackage com.mo.shiro.realm;import org.apache.shiro.authc.AuthenticationException;import org.apache.shiro.authc.Authenti

i春秋Web渗透测试工程师(初级)学习笔记(第三章)_draper-crypto的博客-程序员信息网

往期博客:i春秋Web渗透测试工程师(初级)学习笔记(第一章)i春秋Web渗透测试工程师(初级)学习笔记(第二章)第三章:HTTP协议3.1 HTTP的基本概念3.2 TCP/IP中的位置3.3 HTTP的请求和响应3.3.1 请求3.3.2 响应3.4 HTTP的报头3.5 抓包工具3.1 HTTP的基本概念HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。它是无状态的协议,

推荐文章

热门文章

相关标签