报错信息
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
相关推荐
将虚拟内存大小设置为无限制,有助于避免因内存不足而导致的应用程序异常终止。 #### 配置文件及持久化设置 除了临时通过 `ulimit` 命令更改资源限制外,还可以通过编辑配置文件来实现更永久性的设置。 1. **...
配置MySQL的设置文件,通常位于解压后的目录下的`support-files`子目录。复制`my.cnf`示例配置文件到/etc/,并根据需求进行修改。 ``` sudo cp /usr/local/mysql/support-files/my.cnf /etc/my.cnf ``` 4. **...
放到服务器上运行一段时间抛出Toomanyopenfiles的... 异常信息简单的信息如下: I/Oexception(java.net.SocketException)caughtwhenprocessingrequest:Toomanyopenfiles 大致了解下,是文件句柄数设置太低导致
MySQL的启动可能因配置文件`my.cnf`中的错误而失败。检查该文件,确保所有配置项正确无误,例如端口号、数据目录、用户权限等。如果发现错误,修正后重试启动。 3. **数据目录权限** 确保MySQL的数据目录具有正确...
这通常是因为Linux的文件句柄限制导致MySQL的最大连接数受到了限制。 Linux系统中用于查看和修改文件句柄限制的命令是ulimit。这个命令可以限制进程对系统资源的使用。例如,ulimit -n 65535 命令可以设置每个进程...
# 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。 binlog_cache_size = 1M # 一个事务,在没有提交的时候,产生的日志,记录到...
为了确保 MySQL 服务的稳定运行,需要设置 ulimit 参数。打开 /etc/security/limits.conf 文件,并添加以下内容: * soft nofile 65536 * hard nofile 131072 * soft nproc 65536 * hard nproc 131072 开始执行...
- 调整系统允许的最大文件数,通过ulimit命令设置为65535,并将此值写入/etc/sysctl.conf文件,以确保重启后也能保持该设置。 - 修改IO调度器,对于传统硬盘设备,建议使用deadline调度器;对于SSD或PCIe-SSD设备...
4. **资源限制检查**:检查操作系统设置,确保MySQL有足够的资源运行,如修改ulimit设置,提高文件描述符限制。 5. **定期维护**:定期进行数据库维护,如重建索引,清理无用数据,避免数据碎片。 6. **负载均衡与...
在Linux环境下,MySQL数据库的使用过程中,遇到故障或者异常情况时,我们可能需要利用coredump来分析程序崩溃的原因。coredump是系统记录进程崩溃时内存状态的文件,它可以帮助开发者定位问题所在。以下是对在Linux...
该文件通常包含了MySQL服务器启动时所遵循的各种参数设置,包括但不限于内存分配、缓存大小、日志记录以及安全设置等。通过对`my.cnf`文件的深入理解与合理配置,可以极大提升MySQL数据库系统的性能和稳定性。 ####...
首先,我们要了解`max_connections`参数,这是MySQL配置文件(通常是my.cnf或my.ini)中的一个关键设置。要增大最大连接数,你需要编辑这个文件,并在`[mysqld]`部分添加或修改以下行: ```ini max_connections = ...
本文将详细介绍如何在MySQL出现问题时,启用core文件并进行故障排查。 首先,开启Linux系统的core文件生成功能至关重要。默认情况下,Linux可能不会自动创建core文件。可以使用`ulimit -c unlimited`命令在当前...
- 当MySQL服务提供长连接且需要支持更多并发连接时,需要同时增加`max_connections`设置和`ulimit–u`的值。 - 如果`ulimit–u`值太低,可能会出现错误提示“Can'tcreateanewthread(errno11)”;此时需要增加`...
使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: "root" content: | * hard nofile 65536 ...
MySQL 的主从复制是指将一台或多台 MySQL 服务器(从服务器)设置为复制另一台 MySQL 服务器(主服务器)的数据更新操作。这种方式可以用来备份数据或分担读取请求的压力,实现读写分离。 #### 三、读写分离原理 ...
- **操作系统参数配置**:根据MySQL的性能需求,调整操作系统的内存、磁盘I/O等相关参数,如`swappiness`值和`ulimit`设置。 #### 1.2. MySQL 安装部署 - **创建安装部署目录**:在服务器上创建一个目录,例如 `/u...
- **打开文件数量**: 增加系统和MySQL服务器的最大打开文件数量, 例如在Linux下使用`ulimit -n #`命令。 - **进程和线程数量**: 增加系统可以处理的进程和线程数量。 - **文件系统优化**: 在Solaris系统中, 可以告诉...