一、原因分析

出现本问题,应该是打开文件最多数量不足,默认是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. task host window阻止关机

    在该方法中遇到的问题: 我的电脑是惠普暗影精灵5air,64位的,按照该操作没有效果.这一步中新建的dword默认是32位的,改成新建qword就没有问题了,个人猜测是由于位数不合适的原因造成的. 还 ...

  2. eclipse (4.10.0)安装sts

    1.离线安装 下载对应版本 https://spring.io/tools3/sts/all 打开Eclipse,点击help下的install new software,选择Add..,再点击Arc ...

  3. python中如何获取主机的ip和主机名

    使用python中的socket库,可以轻松获取主机ip和主机名. 一.获取主机名 import socket hostname = socket.gethostname() print(hostna ...

  4. Linux 查询 磁盘空间 系统报错:No space left on device

    报这个错误是磁盘空间不足导致的 使用   du -h -d 1 / | sort -nr 这个命令 一级一级排查

  5. 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,此时可能有人就会问了: ...

  6. xshell he xftp下载网址

    https://www.xshell.com/zh/free-for-home-school/

  7. Spring可扩展的XML Schema机制 NamespaceHandlerSupport

    对xml文件的解析 1.可自定义标签, 2.可以覆盖原有的注册方法, 包括但不限于bean 加载,注解

  8. CCF 202009-2 风险人群筛查

    #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...

  9. python 列表中随机抽取多个数

    方法一:[random.randint(0,100) for _ in range(2)]输出: [34, 44]方法二:list中随机去取K个数list=[1,2.3,......] random. ...

  10. 突然连不上虚拟机,本地网络里没有VMnet8

    今天打开虚拟机,突然发现无法ping通网络了,但是能ping通虚拟机ip,打开我的window的网络适配器发现居然没有vmnet 8虚拟网卡了,防火墙什么的都设置好了,仍然不行,后来发现,在网络和共享 ...