一次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/ | ...
随机推荐
- 大规模并行处理器编程实战_原书第2版_pdf
链接:https://pan.baidu.com/s/1c8ez8dCTz5bUQchwhXAF7w 提取码:tc1f
- VS2017创建Linux项目实现远程GDB调试
vs2017新增linux for C++的模块,尝试安装了一下环境. 首先,安装VS2017,安装时注意选择以下模块: 安装完成后,需要配置Linux服务端的部分,我的配置过程如下: 第一步,安装V ...
- .net基础—多线程(一)
基本概念 进程 打开任务管理器,从任务管理器里面可以看到当前所有正在运行的进程.那么究竟什么是进程呢? 进程(Process)是操作系统中的一个基本概念,它包含着一个运行程序所需要的资源.一个正在运行 ...
- AtCoder Beginner Contest 272 - G - Yet Another mod M
随机 + 数论 题意 Submission #35524126 - AtCoder Beginner Contest 272 给一个长度为 \(n\;(1<=n<=5000)\) 的数组 ...
- PostProcess
后处理器: AutowiredAnnotationBeanPostProcess.class 可以处理@Autowired.@Value 如何注册:context.registerBean(xxx.c ...
- js实现网页自动跳转到手机页面
网站既包含PC端页面,又包括手机端页面时,打开手机端自动跳转手机页面,js代码如下 <script type="text/javascript"> var mobile ...
- Linux 看进程的线程数
pstree -p 12345|wc -l 看进程的线程数 centos7默认并没有安装pstree,所以会有pstree:command not found 安装一下 yum install psm ...
- etcd使用Cfssl生成自签证书(pem)
CFSSL是CloudFlare开源的一款PKI/TLS工具,CFSSL包含一个命令行工具和一个用于签名,验证并且捆绑TLS证书的HTTP API服务,环境构建方面需要 Go 1.12+. 需要两套证 ...
- 044_Schedule Job 间隔时间自动执行
需求:系统上的标准功能是能够设置间隔一天的执行,或者是写完代码着急测试我们写个5分钟后执行的: 但是遇到要求没间隔一小时或者十分钟执行,该怎么处理呢? global class **_Retrieve ...
- Hbase安装(简)
1.下载hbase到服务器,解压移动到/usr/local/下 2.更改vim hbase-env.sh加入java工作目录 export JAVA_HOME=/usr/lib/jvm/java-1. ...