阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

生产环境too man open files问题的解决

429次阅读
没有评论

共计 2782 个字符,预计需要花费 7 分钟才能阅读完成。

一、问题发现

    刚刚上线的项目,前端使用的 LVS+Haproxy 做的负载均衡,支持高并发访问量,但是支撑一段时间后总是出问题,查看日志,发现有如下 Too many open files 的问题。

May 12, 2017 12:49:20 AM org.apache.tomcat.util.net.JIoEndpoint$Acceptor run
SEVERE: Socket accept failed
java.net.SocketException: Too many open files
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:398)
        at java.net.ServerSocket.implAccept(ServerSocket.java:530)
        at java.net.ServerSocket.accept(ServerSocket.java:498)
        at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)
        at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:222)
        at java.lang.Thread.run(Thread.java:745)

二、最大文件打开数描述

1、首先普及几个知识

  • Linux 下一切都是文件,包括输入输出设备、网络连接、socket、管道等;

  • 与文件打开数最相关的是文件描述符(有的人喜欢称作文件标识符,英文为 file descriptor),文件打开数的实质就是文件描述符的数量;

  • 文件打开数的多少取决于系统种类、内存大小,int(语言关键字,如 C99 的 int)长度(非负整数),以及系统管理员的设定;

  • 最大文件打开数是针对一个进程而言,即一个进程能打开的文件句柄数目是有限的,不能超过最大文件打开数;

  • ulimit 命令只对当前 shell 有效,因此在编写 Shell 脚本时,如果需要并能控制文件最大打开数,则先执行“ulimit -n 文件打开数”命令,在去执行下面的内容;

  • 在 Linux 中被打开的文件描述符存放在 /proc/PID/fd/,其中 PID 就是 process identifier。

    除了需要注意,还需要注意 ulimit -v unlimited,最大可用的虚拟内存(The maximum amount of virtual memory available to the shell and, on some systems, to its children)

2、最大文件打开数的全局设置

    在 CentOS 和 Ubuntu 中 ulimit 是一个 bash 里面的内置命令,就像 if、shift 一样,并不是一个单独的命令,因此在 Ubuntu 中通常会遇到有人使用 sudo ulimit -n 65535 命令时遇到找不到这个命令的提示(也许是 sudo 的 bug),

    ulimit 提供 shell 或者进程可用资源的控制,这些可用资源包括但不限于最大文件打开数、最大可用虚拟内存、最大进程数量、socket buffer 等,它有两种限制等级 hard 和 soft,分别对应的参数开关是 - H 和 -S,hard 限制使得非 root 用户不得增加(超过)设定的值,soft 限制允许非 root 用户增加到 hard 的限制值,通常一般会将 hard 值和 soft 值设置成一个相同的值,命令是 ulimit -HSn 65535。

    ulimit 只对当前 shell 有效,要想在任何地方生效,除了先执行 ulimit 命令以外就是更改配置文件,也就是更改最大文件打开数的全局设置,方法是编辑 /etc/security/limits.conf 文件,添加以下两行,重新登录系统生效。

*  hard  nofile  65535
*  soft  nofile  65535

    其中,“*”表示所有用户都生效,重启后,在任何地方执行 ulimit - n 就会显示 65535。

3、一些与文件打开数相关的命令以及其他相关命令

  1. 查看当前系统的文件打开总数(Maximum number of opened files):cat /proc/sys/fs/file-max

  2. 查看当前进程的文件打开数:lsof -p 16075 | wc –l

  3. 查看当前端口的文件打开数:lsof -i:80 | wc -l

  4. 在使用 lsof 之前需要注意,lsof 不适合查看一个连接数很高或者数量动态变化过快的进程或端口

  5. 查看某个进程使用的文件:lsof -p 16075

  6. 查看某个端口使用的文件:lsof -i:80

  7. 查看使用某个文件的用户和程序:fuser -v /bin/bash

三、注意事项

1、使用 ulimit -n 65535 可以立刻生效,但是重新登录之后会恢复成系统初始设置 1024。

2、也可以在 /etc/profile 的最后配置 ulimit -n 65535,使其生效。

构建高可用集群 Keepalived+Haproxy 负载均衡  http://www.linuxidc.com/Linux/2016-12/138917.htm

HAproxy 的基本配置(负载均衡 + 日志独立 + 动静分离 + 读写分离)http://www.linuxidc.com/Linux/2017-03/141614.htm

CentOS 7 下 Keepalived + HAProxy 搭建配置详解  http://www.linuxidc.com/Linux/2017-03/141593.htm

HAproxy 实现反向代理和负载均衡  http://www.linuxidc.com/Linux/2016-12/138749.htm

HAProxy+Keepalived 实现高可用负载均衡 http://www.linuxidc.com/Linux/2016-06/132225.htm

使用 HAProxy 配置 HTTP 负载均衡器 http://www.linuxidc.com/Linux/2015-01/112487.htm

Ubuntu 16.04 下安装 HAProxy 1.5.11 做 tcp 负载均衡 http://www.linuxidc.com/Linux/2016-06/132689.htm

HAproxy 的详细介绍 :请点这里
HAproxy 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/145313.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2782字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7988597
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025年11月28日-Cloudflare史诗级事故:一次配置失误,引爆全球宕机

2025 年 11 月 28 日 -Cloudflare 史诗级事故: 一次配置失误,引爆全球宕机 前言 继今...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...