一次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/ | ...
随机推荐
- Visual Studio 2022(VS2022) 产品密钥
Visual Studio 2022(VS2022) 激活码: Pro: TD244-P4NB7-YQ6XK-Y8MMM-YWV2JEnterprise: VHF9H-NXBBB-638P6-6JHC ...
- centos7.9重启后,主机名会变为IP地址
现象: centos7.9重启后,主机名会变为IP地址 当关闭DHCP功能,则主机名修改生效,否则重启后,主机名依旧变为图示的IP地址 解决方法:经过排查,由 /etc/sysconfig/netwo ...
- java抽象类继承抽象类和抽象方法 java抽象类继承抽象类和抽象方法
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量.成员方法和构造方法的访问方式和普通类一样. 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用.也是因为这个原因,通常在设计阶段决 ...
- mysql数据库配置
1.下载mysql数据库解压到自己存放的路径 2.解压之后配置环境变量 [此电脑]- [右键]-[属性]-[高级系统设置]-[环境变量]- [找到系统变量中的path]-[选中]-[编辑]- [新建] ...
- TCP 协议之三次握手(一)
(声明:本文是阅读此文的总结笔记) 面试中对于该知识点的考察频繁,一般作为面试的暖场问题,你能够答出多少,答得多深刻,条理多清晰,给面试官的印象真的很重要. 三次握手的过程 TCP是面向连接的,全双工 ...
- 类Class
C# 类(Class) 当你定义一个类时,你定义了一个数据类型的蓝图.这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作.对象是类的实 ...
- golang中自带base64编码和解码
package main import ( "encoding/base64" "fmt" "log" ) func main() { in ...
- nodejs 程序打包 打包 koa express 项目 源代码保护加密
打包项目 几个可以 把 nodejs 打包成单个文件的库,为了方便或保护源代码,都可以尝试,打包完成需要测试,如果项目有特殊依赖,可能会失败. https://github.com/nexe/nexe ...
- Window下载并安装WinSCP客户端
winSCP官方网站:https://winscp.net/eng/docs/lang:chs. 环境 操作系统:Window 10 企业版LTSC;内存:8GB;操作类型:64位. 步骤 1. 打开 ...
- 移动端及pc端适配
1.rem搭配CSS预处理器使用 这里我就用vue+less来简单操作一下,具体可以封装到底层,这里暂且演示一下原理. 这里推荐一下使用我的自制脚手架 (songyao-cli) 来快速生成一个vue ...