问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

linux怎么查看默认的句柄数4

发布网友 发布时间:2023-11-12 16:46

我来回答

1个回答

热心网友 时间:2023-12-30 15:53

您好!很高兴能为您解答。
修改文件句柄数在Linux下,我们使用ulimit -n
命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。

对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有
点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值,就会提到“too many files
open”的错误提示。如何知道当前进程打开了多少个文件句柄呢?下面一段小脚本可以帮你查看:

1.lsof -n |awk '{print $2}'|sort|uniq -c |sort
-nr|more

在系统访问高峰时间以root用户执行上面的脚本,可能出现的结果如下:

1.# lsof -n|awk '{print $2}'|sort|uniq -c |sort
-nr|more
2. 131 24204
3. 57 24244
4. 57 24231

5. 56 24264

其中第一行是打开的文件句柄数量,第二行是进程号。得到进程号后,我们可以通过ps命令得到进程的详细内容。

1.ps -aef|grep 24204
2.mysql 24204 24162
99 16:15 ? 00:24:25 /usr/sbin/mysqld

哦,原来是mysql进程打开最多文件句柄数量。但是他目前只打开了131个文件句柄数量,远远底于系统默认值1024。

但是如果系统并发特别大,尤其是squid服务器,很有可能会超过1024。这时候就必须要调整系统参数,以适应应用变化。Linux有硬性*和软性*。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:

1.ulimit -HSn 4096

以 上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量。个人觉得最好不要超过4096,毕竟打开的文件句柄数越多响
应时间肯定会越慢。设定句柄数量后,系统重启后,又会恢复默认值。如果想永久保存下来,,可以修改 /etc/profile
把上面命令加到最后。(findsun提出的办法比较合理)

/////////////////////////////////////////////////////////////////////////////

在 Linux下面部署应用的时候,有时候会遇上Socket/File: Can't open so many
files的问题,其实Linux是有文件句柄*的(就像WinXP?),而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到
这个数量,因此我们需要把这个值改大一些。

大概知道ulimit这个命令是相关的,上Google搜索了一下,大多数说的很含糊,也没有统一说一下,经过两个小时看了不少文章终于弄清楚ulimit相关的一些配置问题。

我们可以用ulimit -a来查看所有*值,我只关心文件句柄数量的问题

open files (-n) 1024

这个就是*数量

这里,有很多ulimit的文章都说的很含糊,究竟这个1024是系统的*,还是用户的*呢。其实,这个是用户*来的,完整的说法,应该是当前用户准备要运行的程序的*。

1、这个*是针对单个程序的*

2、这个*不会改变之前已经运行了的程序的*

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

比如说,我先运行了一个程序A,然后通过ulimit修改了*为2048,然后运行B,然后退出了shell再登录,然后运行C。那就只有B可以打开2048个句柄。

如果我们需要改变整体的*值,或者我们运行的程序是系统启动的,应该怎么处理呢

其中一个方法,是想ulimit修改命令放入/etc/profile里面,但是这个做法并不好

正确的做法,应该是修改/etc/security/limits.conf

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

* soft nofile 2048

* hard nofile 32768

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

这里涉及另外一个问题,什么是软*,什么是硬*

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

其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软

默认显示的是软*,如果修改的时候没有加上的话,就是两个一起改

配置文件最前面的一位是domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的*

修改了,重新登录用ulimit一开就立刻生效了,不过之前启动过的程序要重新启动才能使用新的值。我用的是CentOS,似乎有些系统需要重启才能生效。

ulimit其实就是对单一程序的*

那系统总*呢

其实是在这里,/proc/sys/fs/file-max

可以通过cat查看目前的值,echo来立刻修改

另外还有一个,/proc/sys/fs/file-nr

只读,可以看到整个系统目前使用的文件句柄数量

查找文件句柄问题的时候,还有一个很实用的程序lsof

可以很方便看到某个进程开了那些句柄

也可以看到某个文件/目录被什么进程占用了。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
扫地机哪个牌子最好 扫地机器人哪个牌子好?揭晓十大扫地机器人品牌排行榜 多层次资本市场结构特点 等级基金是什么意思啊 股票分层是什么 理财分层什么意思 股票为什么分上证 现阶段E5200CPU配什么显卡好? 移动 为什么三星手机放了内存卡,但是上面却说没插入slm ...草原歌曲之类的, 要这种类型 又不能太老的歌 linux下,QT窗口如何获取其他窗口的句柄2 微信怎么才能做到两个手机共享一个同时登陆? 香港身份证号码P开头是什么意思15 苹果手机如何修改762 苹果手机怎么改14 055165685155是哪电话是是哪个单位电话? 尾骨在哪个位置图片518 一个女人不爱你的几种表现 在线上我申请了一张腾讯王卡,还没激活,我可以给我朋友用他的身份证... 打坐时可否意在上丹田2 一个双开助手可以同时登录吗对方会下线吗? 购买手机想了解相关信息需下载什么软件? 一个手机号,注册了两个,如果把新注销掉,旧会回来吗... 女朋友一整天都不跟我说话是生我气了吗? 如何改第三次 linux下,QT窗口如何获取其他窗口的句柄2 ...这样,吃完饭没一会儿就又有饥饿感,以前中午不吃饭都不感觉 古文言《济阴贾人》中的几个字的读音3 id怎么改第三次 求《汉语大字典》电子版的完整版2 今天内裤上出现了粘稠状分泌物,是不是羊水破了快生 孕晚期内裤上有清水一样的分泌物,是不是要生了 人体的骶部在那个位置35 苹果手机怎么换138 刘金定是什么人?赵匡胤亲封的兵马大元帅,被追封为巾帼英雄 建筑师和建造师的区别?2869 建造师证书报名条件?936 建筑师与建造师有什么区别?1649 FXDD 的最少入金是250美金? 未满一年怎么强制改 没到一年时间怎么改? 苹果6手机怎样可以改 苹果手机怎么改?250 一斤面粉包多少个饺子 批量操作手机该用什么软件?想了解具体的情况。2 维修奥迪a6前保险杠大概要多长时间修好? 打坐时意守下丹田应该怎么守?43 把若干本书分给若干个学生,如果每人分4本,那么还余12本,如果每人分6本... 跪求汉语大字典下载5 若干本书分给若干个学生,每人5本缺4本,每人4本余3本,问共有几个同学...
  • 焦点

最新推荐

猜你喜欢

热门推荐