`
被触发
  • 浏览: 34875 次
文章分类
社区版块
存档分类
最新评论

因ulimit设置导致的MySQL故障

阅读更多

报错信息

 

Can't create a new thread (errno 11); if you are not out of available memory, you can consult the manual for a possible OS-dependent bug

 

排查

 

用Google,Baidu搜索,都将问题指向了系统的ulimit设置.

(详情,可自行搜索)

 

分析与总结

 

疑问

 

如何查看当前系统或某个进程的limit设置?

limit如何设置?

limit设置后,何时生效?

proc文件系统

 

首先说明一下/proc文件系统,可以借助该目录下的limits文件查看某个进程的ulimit限制情况.

 

执行ps -ef|grep mysql,得到MySQL的进程号.

root     57461     1  0 22:09 pts/4    00:00:00 /bin/sh /home/q/mysql/bin/mysqld_safe --defaults-extra-file=/etc/my_3306.cnf

mysql    58327 57461  0 22:09 pts/4    00:00:00 /home/q/mysql/bin/mysqld --defaults-extra-file=/etc/my_3306.cnf --basedir=/home/q/mysql

再根据进程号,查看ulimit的限制情况.

[lianjie.ning@vm01 ~]$ sudo cat /proc/57461/limits

Limit                     Soft Limit           Hard Limit           Units

Max cpu time              unlimited            unlimited            seconds

Max file size             unlimited            unlimited            bytes

Max data size             unlimited            unlimited            bytes

Max stack size            10485760             unlimited            bytes

Max core file size        0                    unlimited            bytes

Max resident set          unlimited            unlimited            bytes

Max processes             1024                 unlimited            processes

Max open files            65535                65535                files

Max locked memory         65536                65536                bytes

Max address space         unlimited            unlimited            bytes

Max file locks            unlimited            unlimited            locks

Max pending signals       15841                15841                signals

Max msgqueue size         819200               819200               bytes

Max nice priority         0                    0

Max realtime priority     0                    0

Max realtime timeout      unlimited            unlimited            us

proc是什么

Linux版的ps和top命令都从/proc目录读取进程的状态信息,内核把有关系统状态的各种有意义的信息都放在这个伪目录里.

进程特有的信息都分别被放到了按PID起名字的子目录里.

ulimit命令

 

暂时认为该命令可以限制进程的资源使用情况.详细情况可参考man ulimit

配置文件

/etc/security/limits.conf (可配置系统默认的资源分配情况)

soft nofile 10240

hard nofile 40960

/etc/security/limits.d/90-nproc.conf (CentOS 6.2系统新增加的配置文件,可以指定用户可以使用的最大线程数.)

soft nproc 1024

3.     关于生效时间

修改上述两个配置文件,登录到root用户,可以用ulimit -a命令查看是否生效.

普通用户,则需要重启系统,或者直接在当前窗口指定,例如ulimit -u 65535,或者在/etc/profile,~/.bash_profile文件中指定.

例如:当前MySQL的最大线程数为1024,需要修改为65535.过程如下

a.     修改/etc/security/limits.d/90-nproc.conf配置文件

b.    用root用户重新登录

c.     查看ulimit –a,是否生效

d.    重启MySQL

分享到:
评论

相关推荐

    linux_ulimit的使用

    linux_ulimit的使用 linux_ulimit的使用 linux_ulimit的使用

    ulimit设置句柄数

    放到服务器上运行一段时间抛出Toomanyopenfiles的...  异常信息简单的信息如下:  I/Oexception(java.net.SocketException)caughtwhenprocessingrequest:Toomanyopenfiles  大致了解下,是文件句柄数设置太低导致

    银河麒麟v10安装MySQL5.7 含教程

    Linux系统版本:银河麒麟v10 arm MySQL5.7 aarch64 免编译

    mysql数据库my.cnf配置文件

    # 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。 binlog_cache_size = 1M # 一个事务,在没有提交的时候,产生的日志,记录到...

    elasticbeanstalk-docker-ulimit-example:更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目

    使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: "root" content: | * hard nofile 65536 ...

    ansible-ulimit:有助于管理 ulimit 配置的角色

    有助于管理ulimit配置的角色。 例子 --- # Example of how to use the role - hosts: myhost vars: ulimit_config: - domain: '*' type: soft item: core value: 0 - domain: '*' type: hard item: rss ...

    Linux ulimit命令用法详解

    Linux ulimit命令 Linux ulimit命令用于控制shell程序的资源。 ulimit为shell内建指令,可用来控制shell执行程序的资源。 语法 ulimit [-aHS][-c ][-d ][-f ][-m ][-n ][-p ][-s ][-t ][-u ][-v ] 参数: -a 显示...

    ulimit nr_open 自动化配置脚本

    永久修改进程打开文件最大值限制自动化配置脚本,是linux服务器/阿里云新机器必修改选项,安装redis, kafka,elasticsearch等服务器必改

    marmot-cn#readingNotes#设置linux打开文件句柄:proc:sys:fs:file-max和ulimit

    设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是

    /var/log/pacct文件导致MySQL启动失败的案例分享

    毫无预兆的,MySQL 罢工了。 用 mysql.server 启动脚本启动之后,没有任何提示信息就结束,mysqld进程自然是没有起来。 把 mysql.server 里面 $bindir/mysqld_safe –datadir=$datadir ... ulimit -a 查看也没有对文件

    浅谈mysql 系统用户最大文件打开数限制

    交代一下,mysql是装在mysql用户下的,装的时候虽然对数据库参数有进行调优,但是操作系统层面没做调整,所以mysql用户的最大文件打开数限制为默认的1024,用ulimit -n可以查询。然后我在用mysql的root账号登录...

    verify-ulimit:验证当前 ulimit

    验证-ulimit 验证当前 ulimit。

    智能客服 基于springboot+swaggger+elasticsearch+mysql+源代码+文档说明

    es需要设置虚拟缓存 ulimit -v unlimited ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子...

    ulimit命令 控制shell程序的资源

    为提高性能,可以根据设备资源情况,设置各linux用户的最大进程数,我们可以用ulimit来显示当前的各种用户进程限制。 ulimit为shell内建命令,可用来控制shell执行程序的资源。 语法格式:ulimit [参数] 常用参数...

    mysql中一个普通ERROR 1135 (HY000)错误引发的血案

    今天接到测试人员反应,测试环境前端应用程序无连接mysql数据库,登录mysql服务器,查看错误日志,发现有如下报错: ERROR 1135 (HY000): Can’t create a new thread (errno 11);if you are not out of available ...

    增加系统的最大打开文件数

    ulimit -n 这个数字说明了一个普通用户能够在一个单独会话中所能打开最大的文件数目。注意。如果是root,以下操作不能使ulimit -n的输出增加。因为用户root用户不受这个ulimit限制。只有普通用户才会受这个限制。

    Lancger#opslinux#file-max与ulimit的关系与差别1

    /proc/sys/fs/file-nr 当前kernel的句柄The value in file-max denotes the maximum number

    Tsung负载测试tigase

    tsung是一个非常好用的压力测试软件,基于erlang语言,支持多种...在Ubuntu上装好tsung之后,首先要用ulimit修改系统支持的最大fd数量(ulimit-n 20480),否则tsung最多只能创建不到1024个连接,测试脚本是一个xml文件

    并发时-修改Linux系统下的大文件描述符限制

    通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下:  $ulimit -n  1024  当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...

    linux的最大进程句柄数设置

    linux的最大进程句柄数设置在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。

Global site tag (gtag.js) - Google Analytics