一次CentOS 出现“Too many open files"错误的解决
一、原因分析
出现本问题,应该是打开文件最多数量不足,默认是1024个,在生产环境中经常出现该问题。
使用ulimit -a 查看打开文件数量限制

二、解决方案A(临时有效)
1、如果是非root用户
使用命令 vim /etc/security/limits.conf 修改limits.conf文件
添加或修改以下内容,其中770000是打开文件的上限,可以按需修改。
* soft nofile 770000
* hard nofile 770000
修改后效果

修改配置文件后,会发现实际并未生效使用ulimit -a还是显示限制1024个文件。
可以通过su命令切换到root用户再切换回来。假设当前用户是系统普通用户test,通过su切换到root用户,然后不需要其他任何命令,直接再su test 切换回test账户。这时使用ulimit -a,就可以使该配置在当前tty(pts)中生效。
2、如果是root用户
可以使用ulimit -n 770000暂时将文件打开上限修改为770000,以使该配置在当前tty(pts)生效。
三、解决方案B(可一直有效)
进入 /etc/security/limits.d/ 目录, 可以看到一个或多个 *-nproc.conf 文件。

修改*-nproc.conf文件,添加或修改以下内容,其中770000是打开文件的上限,可以按需修改。我这边的实际情况是修改 20-nproc.conf 文件
* soft nofile 770000
* hard nofile 770000
检查 /etc/ssh/sshd_config 文件,确保 UsePAM yes 选项开启。注意:如果默认没有开启本项,请谨慎开启,贸然打开可能导致SSH无法连接。
检查 /etc/pam.d/system-auth 文件,确保存在 session required pam_limits.so 这一项
检查 /etc/pam.d/login 文件,确保存在session required /lib64/security/pam_limits.so 这一项
文件数量限制会在ssh用户注销,并重新登录后开始生效,且在重启服务器后依然有效。
附一篇未验证的“关于PAM导致SSH无法登录”的文章 PAM安全框架导致ssh无法登陆的排查方法
一次CentOS 出现“Too many open files"错误的解决的更多相关文章
- 运维实战案例之“Too many open files”错误与解决方法
运维实战案例之"Too many open files"错误与解决方法 技术小甜 2017-11-16 15:02:00 浏览869 服务器 shell tomcat 脚本 o ...
- Too many open files错误与解决方法
致前辈:该问题的解决思路给了我很大的启发,文章作者Lis, Linux资深技术专家. 问题现象:这是一个基于Java的web应用系统,在后台添加数据时提示无法添加,于是登陆服务器查看Tomcat 日志 ...
- Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 错误的解决
大意是Log4jConfigListener在获取webapp.root值时,被后一context的值替换掉了,所以要在各个项目的web.xml中配置不同的webAppRootKey值,随即在其中一个 ...
- 从源码角度谈谈MySQL "Too many open files"错误的根本原因
"Too many open files"是一个比较常见的错误,不仅仅是在 MySQL 中.只要是在 Linux 中启动的进程,都有可能遇到这个错误. 究其原因,是进程打开的文件描 ...
- Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法
Oracle客户端工具出现"Cannot access NLS data files or invalid environment specified"错误的解决办法 方法一:参考 ...
- The type XXX cannot be resolved. It is indirectly referenced from required .class files错误.....
遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误.....,查找的 ...
- Centos下忘记mysql的root密码的解决方法
Centos下忘记mysql的root密码的解决方法 一:(停掉正在运行的mysql) [root@NetDakVPS ~]# service mysql stop 二:使用 “--skip-gran ...
- CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org
CentOS 使用yum命令安装出现错误提示"could not retrieve mirrorlist http://mirrorlist.centos.org这个错误, 在网上找了好多, ...
- 【亲测】<g++/gcc>CentOS下g++: command not found问题的解决(c++环境安装)
CentOS下g++: command not found问题的解决 2017年02月27日 18:09:06 阅读数:5174 标签: centosgcc 更多 个人分类: 问题分析 版权声明: ...
- centos7,进程最大打开文件数 too many open files错误
遇到一问题,tomcat最近发生几次异常,查看日志,发现一直报 too many open files,熟悉的同学都知道这是用户打开文件数过多导致的, 再用命令ls /proc/20861/fd/ | ...
随机推荐
- task host window阻止关机
在该方法中遇到的问题: 我的电脑是惠普暗影精灵5air,64位的,按照该操作没有效果.这一步中新建的dword默认是32位的,改成新建qword就没有问题了,个人猜测是由于位数不合适的原因造成的. 还 ...
- eclipse (4.10.0)安装sts
1.离线安装 下载对应版本 https://spring.io/tools3/sts/all 打开Eclipse,点击help下的install new software,选择Add..,再点击Arc ...
- python中如何获取主机的ip和主机名
使用python中的socket库,可以轻松获取主机ip和主机名. 一.获取主机名 import socket hostname = socket.gethostname() print(hostna ...
- Linux 查询 磁盘空间 系统报错:No space left on device
报这个错误是磁盘空间不足导致的 使用 du -h -d 1 / | sort -nr 这个命令 一级一级排查
- The `.update()` method does not support writable nestedfields by default. Write an explicit `.update()` method for serializer `...`, or set `read_only=True` on nested serializer fields.解决办法
原因 Serializers中,外表的字段如source="group.title"不能进行写入操作 解决办法 将外表字段设置为read_only=True,此时可能有人就会问了: ...
- xshell he xftp下载网址
https://www.xshell.com/zh/free-for-home-school/
- Spring可扩展的XML Schema机制 NamespaceHandlerSupport
对xml文件的解析 1.可自定义标签, 2.可以覆盖原有的注册方法, 包括但不限于bean 加载,注解
- CCF 202009-2 风险人群筛查
#include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...
- python 列表中随机抽取多个数
方法一:[random.randint(0,100) for _ in range(2)]输出: [34, 44]方法二:list中随机去取K个数list=[1,2.3,......] random. ...
- 突然连不上虚拟机,本地网络里没有VMnet8
今天打开虚拟机,突然发现无法ping通网络了,但是能ping通虚拟机ip,打开我的window的网络适配器发现居然没有vmnet 8虚拟网卡了,防火墙什么的都设置好了,仍然不行,后来发现,在网络和共享 ...