一、原因分析

出现本问题,应该是打开文件最多数量不足,默认是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. HttpClient常用的一些常识

    HttpClient是目前我们通讯组件中最常见的一个Api了吧.至少从我目前接触到与外部系统通讯的话是这样的.下面我将我自己常用的一些知识总结一下. 因为本猿也是边写边总结,有啥不对的还望多多指出. ...

  2. bilibili经典面试题

    1. 如何向面试官解释什么是Redis,看看普通人和高手是如何回答的?_哔哩哔哩_bilibili 2.Java面试热点问题,synchronized原理剖析与优化_哔哩哔哩_bilibili 3.黑 ...

  3. 页面布局 Stack 层叠组件 Stack 与 Align Stack 与 Positioned 实现定位布局

    一.Flutter Stack 组件 Stack 表示堆的意思,我们可以用 Stack 或者 Stack 结合 Align 或者 Stack 结合 Positiond 来实现页面的定位布局 属性 说明 ...

  4. gin web 2

    routers/router.go package routers import ( "github.com/gin-gonic/gin" "gin-blog/pkg/s ...

  5. react video

    import React, { useRef, useState, useCallback } from 'react'; import './style.scss'; const typeCheck ...

  6. 阿里云经典网络Debian 11 启动非常慢

    有一台阿里云经典网络的实例.系统太老了,重装了Debian 11,但是启动非常慢,要5分钟才能开机,简直离谱. root@AliYun:~# systemd-analyze blame 5min 3. ...

  7. Java-面向对象基础 this& 重载

    1.this表示当前对象 获取当前对象的属性 使用this调用当前属性 2.重载 如果两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载

  8. wxPython绘图API

    简单介绍一个Pthon的绘图库wxPython. GDI+(图形绘制接口),CoreGraphics和Cairo库形成wxPython绘图API的框架.wx.GraphicsContext是主要绘制对 ...

  9. IDEA给【类】和【方法】设置作者和日期等注释

    https://blog.csdn.net/m0_61933976/article/details/127021176 一.在Java类的开头自动注释作者名字和日期等信息 这样以后只要我们创建一个类, ...

  10. Mardown学习

    Mardown学习 标题: 一级标题:'#'+'空格'+'标题名字'+'回车' 二级标题:'##'+'空格'+'标题名字'+'回车' 三级标题:'###'+'空格'+'标题名字'+'回车' 四级标题: ...