以下内容转载自 https://blog.csdn.net/zhizhengguan/article/details/91753479

在/etc/security/limits.conf添加

cat > /etc/security/limits.conf <<EOF* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072EOF

然后重启


echo -n > /etc/security/limits.d/90-nproc.conf

many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数。

  1. 查看系统的配置 ulimit -a | grep open,发现系统的配置正常。
  2. 查看程序服务的打开文件限制,cat /proc/40636/limits,发现服务的限制并没有继承系统设置的,还是系统默认的1024限制。
  3. 查看程序服务打开文件数(连接数)情况,lsof -p 40636 | wc -l,发现已经超出限制,所以报错。
  4. 再看看程序服务打开了哪些连接,lsof -p 40636 > openfiles.log,发现很多http连接打开没有关闭,看ip是报警服务的接口,于是顺着这条线索,终于找到了原因,因为程序中读取到的配置解析时报错给报警服务,大量的报警服务连接后未关闭,才导致的too many open files,这是问题的关键,但是程序为什么没有继承系统设置的最大配置限制,还需要继续查看。

系统最大打开文件描述符数:

查看

$ cat /proc/sys/fs/file-max
6553600
#3 设置
$ vim /etc/sysctl.conf
fs.file-max = 6553600


查询:

[oceanstar@192 cap]$  ulimit -n
1024
[oceanstar@192 cap]$  ulimit -Hn
4096
[oceanstar@192 cap]$ ulimit -Sn
1024

查看某进程的文件打开数
cat /proc//limits
ls -lh /proc//fd
ls -lh /proc//fd|wc -l
lsof -p 78757 | wc -l

调整


Linux ulimit命令用于控制shell程序的资源。

ulimit为shell内建指令,可用来控制shell执行程序的资源。

-a  显示目前资源限制的设定。
-c <core文件上限>  设定core文件的最大值,单位为区块。
-d <数据节区大小>  程序数据节区的最大值,单位为KB。
-f <文件大小>  shell所能建立的最大文件,单位为区块。
-H  设定资源的硬性限制,也就是管理员所设下的限制。
-m <内存大小>  指定可使用内存的上限,单位为KB。
-n <文件数目>  指定同一时间最多可开启的文件数。
-p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。
-s <堆叠大小>  指定堆叠的上限,单位为KB。
-S  设定资源的弹性限制。
-t <CPU时间>  指定CPU使用时间的上限,单位为秒。
-u <程序数目>  用户最多可开启的程序数目。
-v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。

accept4: too many open files; retrying in 1s相关推荐

  1. go的http服务报错accept4: too many open files

    执行命令"netstat -ano |grep 8300"后发现有很多"tcp6     210      0 127.0.0.1:8300          127.0 ...

  2. centos7 tomcat_CentOS7下Tomcat应用容器抛出Too many open files问题

    背景 在实际开发中有一款设备管理软件,一般情况下接入的设备并不多,最多几十台:最近有一个项目中,需要接入2000台这样的设备,运行一段时间后,会大量抛出Too many open files:导致设备 ...

  3. go语言 Accept error: accept tcp [::]:5551: too many open files;

    2019独角兽企业重金招聘Python工程师标准>>> 在使用go语言请求服务器的时候,在一个for循环内使用http.post所引发的错误是:Accept error: accep ...

  4. Iceberg删除过期snapshots、老的metadata files、孤立的文件,合并data files和manifests

    目录 1. 过期snapshots的处理 2. 删除老的metadata files 3. 删除孤立的文件 4. 合并data files 5. Rewrite manifests 1. 过期snap ...

  5. K8s常见问题分析解决

    1: Pod始终处于pending状态 详细描述: Pod始终处于pending状态 解题思路: 如果pod保持在pending的状态,意味着无法被正常的调度到节点上,由于系统的某些资源无法满足Pod ...

  6. K8s常见问题分析解决(未分类问题一)

    1: Pod始终处于pending状态 详细描述:Pod始终处于pending状态 解题思路:如果pod保持在pending的状态,意味着无法被正常的调度到节点上,由于系统的某些资源无法满足Pod的运 ...

  7. golang net/http 超时机制完全手册

    目录 SetDeadline 服务器端超时设置 客户端超时设置 Cancel 和 Context 英文原始出处: The complete guide to Go net/http timeouts, ...

  8. DockOne微信分享(八十四):Docker在B站的实施之路

    本文讲的是DockOne微信分享(八十四):Docker在B站的实施之路[编者的话]B站一直在关注Docker的发展,去年成功在核心SLB(Tengine)集群上实施了Docker.今年我们对比了各种 ...

  9. 图像处理和图像识别中常用的matlab函数

    下面仅给出函数的大概意思,详细用法见: help  函数名 或 matlab help 1.imread:read image from graphics file: 2.imshow:display ...

最新文章

  1. vue从其它页面返回_vue---详细页点返回列表页,停留在原先位置
  2. RDCL报表的两种使用方法/为DataSet添加两个Table_AX
  3. TQ210 —— S5PV210 gboot设计
  4. 基于HTML5的WebGL实现的2D3D迷宫小游戏
  5. 风变python培训_风变python学习小结
  6. 通俗易懂的生产环境Web应用架构介绍
  7. 给BERT加一个loss就能稳定提升?斯坦福+Facebook最新力作!
  8. 北航计算机组成重修,北航计算机组成原理123希望大伙把作业上传.pdf
  9. SpringSecurity前后端分离
  10. 玩归玩,闹归闹,别拿抽奖开玩笑
  11. 吊打全球的顶级毫米波数字阵列项目-MIDAS
  12. 微生物群落结构差异分析
  13. Linux 开机引导和启动过程详解
  14. AndroidTagView 云标签
  15. 基于深度学习的表面缺陷检测方法综述-论文阅读笔记
  16. 昇腾Mindstudio官方样例黑白图片上色
  17. 主板是2011针服务器型号,华硕服务器主板 Z9PA-D8/C 双路2011针脚
  18. MySQL的TRUNCATE()函数
  19. UE4资源热更打包工具HotPatcher
  20. JS面试题--ES6知识大全

热门文章

  1. Python3.7,在Anaconda中安装PIL
  2. Linux shell: ls命令详解
  3. Codeforces Global Round 23 E CF1746E Joking (Hard Version)
  4. 【计算几何】计算几何复习
  5. [UVA 10635] Prince ans Princess
  6. 【Android实战】保存QQ账号与密码
  7. Git版本控制的使用
  8. Scrum 项目 4.0-5.0-约教网站开发(一)
  9. 无法为数据库中的对象分配空间,因为'PRIMARY'文件组已满问题处理方式
  10. 利用迈克尔逊干涉仪和傅里叶变换光谱法测量相干性