报错信息
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的使用
放到服务器上运行一段时间抛出Toomanyopenfiles的... 异常信息简单的信息如下: I/Oexception(java.net.SocketException)caughtwhenprocessingrequest:Toomanyopenfiles 大致了解下,是文件句柄数设置太低导致
Linux系统版本:银河麒麟v10 arm MySQL5.7 aarch64 免编译
# 该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。 binlog_cache_size = 1M # 一个事务,在没有提交的时候,产生的日志,记录到...
使用以下 ebextensions 配置更新 ulimit 设置的示例 Elastic Beanstalk Docker 项目: files: "/etc/security/limits.conf": mode: "00644" owner: "root" group: "root" content: | * hard nofile 65536 ...
有助于管理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命令用于控制shell程序的资源。 ulimit为shell内建指令,可用来控制shell执行程序的资源。 语法 ulimit [-aHS][-c ][-d ][-f ][-m ][-n ][-p ][-s ][-t ][-u ][-v ] 参数: -a 显示...
永久修改进程打开文件最大值限制自动化配置脚本,是linux服务器/阿里云新机器必修改选项,安装redis, kafka,elasticsearch等服务器必改
设置Linux打开文件句柄/proc/sys/fs/file-max和ulimit -n的区别表示系统级别的能够打开的文件句柄的数量.是对整个系统的限制,并不是
毫无预兆的,MySQL 罢工了。 用 mysql.server 启动脚本启动之后,没有任何提示信息就结束,mysqld进程自然是没有起来。 把 mysql.server 里面 $bindir/mysqld_safe –datadir=$datadir ... ulimit -a 查看也没有对文件
交代一下,mysql是装在mysql用户下的,装的时候虽然对数据库参数有进行调优,但是操作系统层面没做调整,所以mysql用户的最大文件打开数限制为默认的1024,用ulimit -n可以查询。然后我在用mysql的root账号登录...
验证-ulimit 验证当前 ulimit。
es需要设置虚拟缓存 ulimit -v unlimited ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子...
为提高性能,可以根据设备资源情况,设置各linux用户的最大进程数,我们可以用ulimit来显示当前的各种用户进程限制。 ulimit为shell内建命令,可用来控制shell执行程序的资源。 语法格式:ulimit [参数] 常用参数...
今天接到测试人员反应,测试环境前端应用程序无连接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限制。只有普通用户才会受这个限制。
/proc/sys/fs/file-nr 当前kernel的句柄The value in file-max denotes the maximum number
tsung是一个非常好用的压力测试软件,基于erlang语言,支持多种...在Ubuntu上装好tsung之后,首先要用ulimit修改系统支持的最大fd数量(ulimit-n 20480),否则tsung最多只能创建不到1024个连接,测试脚本是一个xml文件
通常我们通过终端连接到linux系统后执行ulimit -n 命令可以看到本次登录的session其文件描述符的限制,如下: $ulimit -n 1024 当然可以通过ulimit -SHn 102400 命令来修改该限制,但这个变更只对当前的...
linux的最大进程句柄数设置在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。