一、原因分析

出现本问题,应该是打开文件最多数量不足,默认是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"错误的解决的更多相关文章

  1. 运维实战案例之“Too many open files”错误与解决方法

    运维实战案例之"Too many open files"错误与解决方法   技术小甜 2017-11-16 15:02:00 浏览869 服务器 shell tomcat 脚本 o ...

  2. Too many open files错误与解决方法

    致前辈:该问题的解决思路给了我很大的启发,文章作者Lis, Linux资深技术专家. 问题现象:这是一个基于Java的web应用系统,在后台添加数据时提示无法添加,于是登陆服务器查看Tomcat 日志 ...

  3. Choose unique values for the 'webAppRootKey' context-param in your web.xml files! 错误的解决

    大意是Log4jConfigListener在获取webapp.root值时,被后一context的值替换掉了,所以要在各个项目的web.xml中配置不同的webAppRootKey值,随即在其中一个 ...

  4. 从源码角度谈谈MySQL "Too many open files"错误的根本原因

    "Too many open files"是一个比较常见的错误,不仅仅是在 MySQL 中.只要是在 Linux 中启动的进程,都有可能遇到这个错误. 究其原因,是进程打开的文件描 ...

  5. Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法

    Oracle客户端工具出现"Cannot access NLS data files or invalid environment specified"错误的解决办法 方法一:参考 ...

  6. 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错误.....,查找的 ...

  7. Centos下忘记mysql的root密码的解决方法

    Centos下忘记mysql的root密码的解决方法 一:(停掉正在运行的mysql) [root@NetDakVPS ~]# service mysql stop 二:使用 “--skip-gran ...

  8. CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org

    CentOS 使用yum命令安装出现错误提示"could not retrieve mirrorlist http://mirrorlist.centos.org这个错误, 在网上找了好多, ...

  9. 【亲测】<g++/gcc>CentOS下g++: command not found问题的解决(c++环境安装)

    CentOS下g++: command not found问题的解决 2017年02月27日 18:09:06 阅读数:5174 标签: centosgcc 更多 个人分类: 问题分析   版权声明: ...

  10. centos7,进程最大打开文件数 too many open files错误

    遇到一问题,tomcat最近发生几次异常,查看日志,发现一直报 too many open files,熟悉的同学都知道这是用户打开文件数过多导致的, 再用命令ls /proc/20861/fd/ | ...

随机推荐

  1. R6-1 数字金字塔

    1 void pyramid(int n) 2 { 3 int i, j; 4 5 for(i = 0;i < n;i++){ 6 for(j = 0;j < n - i - 1;j++) ...

  2. under display camera

    https://yzhouas.github.io/projects/UDC/udc.html https://zhuanlan.zhihu.com/p/389863230 MIPI 2022 Cha ...

  3. JVMCFRE003 bad major version问题

    项目启动异常日志 [21-11-18 23:46:58:166 CST] 00000020 DispatcherSer I org.springframework.web.servlet.Framew ...

  4. 浅谈tcp 与udp

    tcp是一种面向连接的.可靠的.基于字节流的传输层通信协议.是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流. udp(用户数据报协议)是iso参考模型中一种无连接的传输层 ...

  5. Entity Framework Core 的 SQL 日志记录

    日志配置通常由 appsettings {Environment} .json 文件的 Logging 部分提供 . 若要记录 SQL 语句,请将 "Microsoft.EntityFram ...

  6. 学python有了这些书你还担心有什么学不会的吗

    百度云盘:Python高级编程PDF高清完整版书籍免费下载 提取码:bn9d 内容简介  · · · · · · <Python高级编程>通过大量的实例,介绍了Python语言的最佳实践和 ...

  7. ant Vue select 多条数据重复的问题

    1.问题描述:select实现下拉的功能,并且带前端搜索,但是后端给的数据没去重,对象中所有的参数值有保持一致,试了下,发现只要key值和value值不一致就不会报错: 2.解决:key值用index ...

  8. iOS开发 WKWebView实现JS交互

    需求:利用webView加载H5页面,并实现点击H5页面的按钮触发事件,事件是调用OC的方法.简单说就是JS调用OC的方法,这里我们选择的是WKWebView,至于为什么不用UIWebView,自行百 ...

  9. vue3 vite等笔记

    1.脚手架 vue-cli基于webpack封装,生态非常强大,可配置性也非常高,几乎能够满足前端工程化的所有要求.缺点就是配置复杂,甚至有公司有专门的webpack工程师专门做配置,另外就是webp ...

  10. tomcat各个版本下载

    官网地址:https://archive.apache.org/dist/tomcat/