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

因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的使用

    将虚拟内存大小设置为无限制,有助于避免因内存不足而导致的应用程序异常终止。 #### 配置文件及持久化设置 除了临时通过 `ulimit` 命令更改资源限制外,还可以通过编辑配置文件来实现更永久性的设置。 1. **...

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

    配置MySQL的设置文件,通常位于解压后的目录下的`support-files`子目录。复制`my.cnf`示例配置文件到/etc/,并根据需求进行修改。 ``` sudo cp /usr/local/mysql/support-files/my.cnf /etc/my.cnf ``` 4. **...

    ulimit设置句柄数

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

    mysql没法启动的解决办法

    MySQL的启动可能因配置文件`my.cnf`中的错误而失败。检查该文件,确保所有配置项正确无误,例如端口号、数据目录、用户权限等。如果发现错误,修正后重试启动。 3. **数据目录权限** 确保MySQL的数据目录具有正确...

    39 案例实战:如何解决经典的Too many connections故障?背后原理是什么.pdf

    这通常是因为Linux的文件句柄限制导致MySQL的最大连接数受到了限制。 Linux系统中用于查看和修改文件句柄限制的命令是ulimit。这个命令可以限制进程对系统资源的使用。例如,ulimit -n 65535 命令可以设置每个进程...

    mysql数据库my.cnf配置文件

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

    mysql 二进制安装文档

    为了确保 MySQL 服务的稳定运行,需要设置 ulimit 参数。打开 /etc/security/limits.conf 文件,并添加以下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 65536 * hard nproc 131072 开始执行...

    MySQL运行环境建议规范.pdf

    - 调整系统允许的最大文件数,通过ulimit命令设置为65535,并将此值写入/etc/sysctl.conf文件,以确保重启后也能保持该设置。 - 修改IO调度器,对于传统硬盘设备,建议使用deadline调度器;对于SSD或PCIe-SSD设备...

    MySQL数据库CPU飙升及烂sql记录

    4. **资源限制检查**:检查操作系统设置,确保MySQL有足够的资源运行,如修改ulimit设置,提高文件描述符限制。 5. **定期维护**:定期进行数据库维护,如重建索引,清理无用数据,避免数据碎片。 6. **负载均衡与...

    Linux下MySQL数据库使用coredump注意事项

    在Linux环境下,MySQL数据库的使用过程中,遇到故障或者异常情况时,我们可能需要利用coredump来分析程序崩溃的原因。coredump是系统记录进程崩溃时内存状态的文件,它可以帮助开发者定位问题所在。以下是对在Linux...

    MySQL中my.cnf文件选项

    该文件通常包含了MySQL服务器启动时所遵循的各种参数设置,包括但不限于内存分配、缓存大小、日志记录以及安全设置等。通过对`my.cnf`文件的深入理解与合理配置,可以极大提升MySQL数据库系统的性能和稳定性。 ####...

    mysql的最大连接数修改方法_默认是100, 最大可以达到16384

    首先,我们要了解`max_connections`参数,这是MySQL配置文件(通常是my.cnf或my.ini)中的一个关键设置。要增大最大连接数,你需要编辑这个文件,并在`[mysqld]`部分添加或修改以下行: ```ini max_connections = ...

    用MySQL开启core文件.pdf

    本文将详细介绍如何在MySQL出现问题时,启用core文件并进行故障排查。 首先,开启Linux系统的core文件生成功能至关重要。默认情况下,Linux可能不会自动创建core文件。可以使用`ulimit -c unlimited`命令在当前...

    mysql数据库测试报告

    - 当MySQL服务提供长连接且需要支持更多并发连接时,需要同时增加`max_connections`设置和`ulimit–u`的值。 - 如果`ulimit–u`值太低,可能会出现错误提示“Can'tcreateanewthread(errno11)”;此时需要增加`...

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

    MySQL-Proxy

    MySQL 的主从复制是指将一台或多台 MySQL 服务器(从服务器)设置为复制另一台 MySQL 服务器(主服务器)的数据更新操作。这种方式可以用来备份数据或分担读取请求的压力,实现读写分离。 #### 三、读写分离原理 ...

    MYSQ主从集群简单搭建的部署方案

    - **操作系统参数配置**:根据MySQL的性能需求,调整操作系统的内存、磁盘I/O等相关参数,如`swappiness`值和`ulimit`设置。 #### 1.2. MySQL 安装部署 - **创建安装部署目录**:在服务器上创建一个目录,例如 `/u...

    MySQL最佳优化完美攻略

    - **打开文件数量**: 增加系统和MySQL服务器的最大打开文件数量, 例如在Linux下使用`ulimit -n #`命令。 - **进程和线程数量**: 增加系统可以处理的进程和线程数量。 - **文件系统优化**: 在Solaris系统中, 可以告诉...

Global site tag (gtag.js) - Google Analytics