linux文件句柄数满,linux文件句柄数超出系统限制怎么办?

fc911fc871d2b21d381be805c94666de.png

1、问题阐述:

too many open files:顾名思义即打开过多文件数。

不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

2、产生的原因:

经常在使用linux的时候出现,大多数情况是由于程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。

3、经典案例:

很多项目上线不久运行了一段时间后,服务突然宕了,经检查日志,出现了too many open files 错误。

85fdbd9b0aa1dfb917f3107bfbea6ef8.png

4、解决方案:

其实Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到 这个数量,因此我们需要把这个值改大一些。我们可以用ulimit -n 来查看当前用户句柄数限制。那么这个1024是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。

这个限制是针对单个程序的限制

这个限制不会改变之前已经运行了的程序的限制

对这个值的修改,退出了当前的shell就会消失

因此出现这种问题有两种解决方式:

第一:增大文件句柄数。这种方式能及时解决问题,但是不能够彻底的解决问题,可以为彻底解决问题提供一定的时间保证。那么如何增大文件句柄数数呢?

如修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535.

2)将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)

为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。

echo ulimit -n 65535 >>/etc/profile

source /etc/profile #加载修改后的profile

ulimit -n #显示65535,修改完毕!

到此为止,你以为大功告成了么,其实不然,突然发现自己再次登录进来的时候,ulimit的值还是1024,这是为什么呢? 用户登录的时候执行sh脚本的顺序:

/etc/profile.d/file

/etc/profile

/etc/bashrc

/mingjie/.bashrc

/mingjie/.bash_profile

由于ulimit -n的脚本命令加载在第二部分,用户登录时由于权限原因在第二步还不能完成ulimit的修改,所以ulimit的值还是系统默认的1024。所以想彻底改变这种问题,就必须做如下操作:修改/etc/security/limits.conf

里面有很详细的注释,比如

* soft nofile 2048

* hard nofile 32768

就可以将文件句柄限制统一改成软2048,硬32768

那么什么是软限制,什么是硬限制 ?

硬限制是实际的限制,而软限制,是warnning限制,只会做出warning

这样就实际地增大了文件句柄数。

第二:分析句柄数,查找原因,这是解决问题最根本的办法。那么如何分析那,就需要用到lsof这个命令了(关于这个命令大家可以在网上学习学习)。

(1)统计各进程打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

(2)统计各用户打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

(3)统计各命令打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题

linux系统升级后,手动编译的kernel无法启动问题linux系统升级后,手动编译的kernel无法启动问题做开发相关,需要编译3.18的kernel,x86_64的,但是我的deepin升级v20之后,编译的kernel就无法启动了&#xff0c…

linux大内存拷贝优化,Linux 下基础设施及系统网络优化

基础设施优化CPU 优化多级缓存充分利用 cache 是 CPU 调优的重要手段,由于是底层优化作用范围广。性能分析利器——Perf 参数学习提升 cache 命中率缓存命中: CPU 要取的数据再一级缓存内,直接读取,称为 cache 命中率使用 Perf 查…

Vue或React多页应用脚手架

https://github.com/zhujiasheng/vue-multipage https://github.com/MeCKodo/vue-multipage 转载于:https://www.cnblogs.com/zhujiasheng/p/6112335.html

磁盘管理来安装linux,Linux_在CentOS系统中安装quota来管理磁盘配额,在网络管理的工作中,由于硬 - phpStudy...

在CentOS系统中安装quota来管理磁盘配额在网络管理的工作中,由于硬盘的资源是有限的,常常需要为多用户的服务器设定用户的linux磁盘配额。这个功能对公用的多用户服务器(免费的或者收费的)来说,更是非常必要的。Quota就是在RedHatlinux下实现…

arcgis api 3.x for js 入门开发系列六地图分屏对比(附源码下载)

前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类的介绍,还有就是在线例子:esri 官网在线例子,这个也是学…

linux中进程pts 1和pts 3,termial创建时ptmx与pts的关系

我们打开一个terminal,那么将会在devpts文件系统/dev/pts下创建一个对应的pts字符文件,该pts字符文件节点直接由/dev/ptmx节点的驱动函数ptmx_open()调用devpts_pty_new(tty->link)[tty对应ptmx,tty->link对应/dev/pts/xxx,那么tty->link->link又对应回ptmx同样ptm…

linux系统无root权限lua库安装,liunx系统中安装lua以及torch

一直在用pytorch,最近在做项目的时候,遇到了torch的开源代码,所以又开始不得不接触torch以及他所依赖的环境lua。 liunx下lua环境的配置代码如下: curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxf lua-5.3.5.tar.gz cd lua-5.3…

js数组去重的四种方式

// 删除重复的 function only(arr){for(var i0;i<arr.length;i){for(var j i1;j<arr.length;j){if(arr[i]arr[j]){arr.splice(j,1);j--;}}}return arr; } console.log(only([6]));//[6] console.log(only([1,9,8,8,0,6,0,6]));//[1, 9, 8, 0, 6]// 往新数组中插入不重复…

linux的usermod命令参数,linux usermod命令参数及用法详解

linuxusermod命令参数及用法详解,linux修改用户账号信息命令,usermod可用来修改用户帐号的各项设定。接下来是小编为大家收集的linux usermod命令参数及用法详解&#xff0c;欢迎大家阅读&#xff1a;linux usermod命令参数及用法详解命令&#xff1a;usermod功能说明&#xff…

SVN版本管理trunk及branch相关merge操作

先说说什么是branch。按照Subversion的说法&#xff0c;一个branch是某个development line&#xff08;通常是主线也即trunk&#xff09;的一个拷贝&#xff0c;见下图&#xff1a; branch存在的意义在于&#xff0c;在不干扰trunk的情况下&#xff0c;和trunk并行开发&#xf…

linux没有interface文件,Linux下interface文件修改

我们来通过一些例子&#xff0c;来记录interfaces文件的书写。详情可参照man interfaces。设置常用ethernet参数auto loiface lo inet loopback# The primary network interfaceauto eth0iface eth0 inet staticaddress192.168.0.42network192.168.0.0netmask255.255.255.0broa…

线程之间通信 等待(wait)和通知(notify)

线程通信概念&#xff1a; 线程是操作系统中独立的个体&#xff0c;但这些个体如果不经过特殊的处理就不能成为一个整体&#xff0c;线程之间的通信就成为整体的必用方式之一。当线程存在通信指挥&#xff0c;系统间的交互性会更强大&#xff0c;在提高CPU利用率的同时还会对线…

女生适合linux运维吗,女生适不适合做Linux运维工程师进入IT行业?

很多人对于女生做Linux运维工程师进入IT还有都存在质疑。因为大多数人认为女生不适合IT行业&#xff0c;IT is a men’sworld&#xff0c;女生学IT是件匪夷所思的事情。在传统的思维当中&#xff0c;女生只适合从事像教师、会计、公务员等稳定的职业。然而&#xff0c;这一莫名…

PHP函数积累

PHP函数积累 simplexml_load_string 将Xml转化为对象&#xff1b;返回对象1 <?php2 $string <<<XML3 <?xml version1.0?> 4 <document>5 <title>Forty What?</title>6 <from>Joe</from>7 <to>Jane</to>8 <…

红帽linux6的版本号,RedHat CentOS发行版本号及内核版本号对照表

Redhat 9.0———————————————2.4.20-8RHEL 3 Update 8————————————2.4.21-47RHEL 4 ————————————————2.6.9-5RHEL 4 Update 1————————————2.6.9-11RHEL 4 Update 2————————————2.6.9-22RHEL 4 Update 3———…

WPF强制更新

&#xff0c;更新的时候选择最小版本号,就是强制更新 转载于:https://www.cnblogs.com/damsoft/p/6119509.html

鸟哥的linux私房菜简答题答案,《鸟哥的Linux私房菜》7章 Linux文件与目录管理 习题答案...

自己整理了一下&#xff0c;分享给大家&#xff0c;这些习题确实是非常经典的&#xff01;1.什么是绝对路径与相对路径&#xff1f;绝对路径是相对于/目录的路径的&#xff0c;比如/home/user&#xff1b;相对路径是相对于当前工作目录的&#xff0c;比如你的系统上有个/home/u…

昨天的新的解决方法

aint(input("k:")) sumj0 sum1 for i in range(1,a1):sumsum*isumjsumjsum print(str(sumj)) 比昨天少一行…… 趁烧水的时间来写的。 明天拉链 今天要出去买东西 。 但是外面飘小雨~ 早安世界&#xff01;转载于:https://www.cnblogs.com/juemz/p/6120490.html

c语言程序设计 第三版 哈工大,c语言程序设计 哈工大 苏小红 第三章习题

这是学习课程时自己在VC上操作运行的第二章P24 T2#includevoid main(){printf("These values are:\n");float x2.5,y2.5,z2.5;printf("x%f\n",x);printf("y%f\n",y);printf("z%f\n",z);}例3.1#include main(){int x 153, b0, b1, b2,…

a的n次方的最后三位数c语言,求13的n次方(12n≤130000000000)的最后三位数,用c++编程...

#includeintmain(){longlonginti,x,y,last;/*变量last保存求X的Y次方过程中的部分乘积的后三位*///输入while(scanf("%lld,%lld",&x,&y)2){last1;x%1000;//因为一个三位数的n次方的最后三位数只和这个数的最后三位数有关y%100;//因为可以发现这个是一个轮回&…