
修改文件句柄的数量. 在Linux下,我们使用ulimit -n命令查看单个进程可以打开的最大文件句柄数(也计入套接字连接数). 系统默认值为1024.
对于一般应用程序(如Apache,系统进程),1024完全足够. 但是,如何在单个进程(如Squid,mysql,java等)中处理大量请求有些困难. 如果单个进程打开的文件句柄数超过了系统定义的值,则会出现错误消息“打开的文件太多”. 如何知道当前进程打开了多少个文件句柄?以下小脚本可以帮助您查看:
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(套接字/文件)问题: 无法打开太多文件. 实际上,Linux具有文件句柄限制(例如WinXP?),默认值不是很高,通常是1024. 作为生产服务器打开句柄数,实际上很容易达到此数量,因此我们需要增加此值.
我大概知道ulimit命令是相关的. 在Google上搜索后,大多数人都说它含糊不清,而我并没有统一地说出来. 在阅读了两个小时的许多文章之后,我终于找到了一些与ulimit相关的配置问题.
我们可以使用ulimit -a查看所有限制值,我只关心文件句柄的数量

打开文件(-n)1024
这是极限数量
在这里,有很多关于ulimit的文章非常模糊. 这是系统限制还是用户限制1024?实际上,这是由于用户限制. 完整的声明应该是当前用户准备运行的程序的限制.
1. 此限制适用于单个程序
2. 此限制不会更改之前运行的程序的限制
3. 退出当前外壳后,对该值的修改将消失
例如,我首先运行一个程序A,然后通过ulimit将限制修改为2048,然后运行B,然后退出外壳并登录,然后运行C. 然后只有B可以打开2048个句柄.
如果需要更改整体极限值,或者我们运行的程序是由系统启动的,我们应该怎么做?
方法之一是将ulimit修改命令放在/ etc / profile中,但这不好.
正确的方法应该是修改/etc/security/limits.conf

有非常详细的注释,例如
*软nofile 2048
*硬nofile 32768
您可以将文件句柄限制统一更改为软2048和硬32768
这里涉及另一个问题,什么是软限制,什么是硬限制
硬极限是实际极限,软极限是警告极限,只会发出警告
实际上,ulimit命令本身具有软设置和硬设置,加上-H是硬设置,加上-S是软设置
默认显示软限制. 如果在修改过程中未添加,则两者将一起更改
配置文件的第一位是domain,设置为星号代表全局,并且您还可以对不同的用户进行不同的限制
修改后,使用ulimit重新登录将在打开后立即生效,但是之前已启动的程序需要重新启动才能使用新值. 我使用的是CentOS,看来有些系统需要重新启动才能生效.

ulimit实际上是单个程序的限制
整个系统的局限性如何?
实际上在这里/ proc / sys / fs / file-max
您可以通过cat查看当前值,然后回显以立即对其进行修改
还有一个/ proc / sys / fs / file-nr
只读打开句柄数,您可以看到整个系统当前使用的文件句柄数量
寻找文件句柄问题时,还有一个非常有用的程序lsof
您可以轻松查看进程打开了哪些句柄
您还可以查看文件/目录占用了哪些进程.
在上面的Linux中,进程打开的文件句柄的数量以及如何对其进行修改是我与您共享的所有内容. 希望能给您参考,也希望您能给予我们很多支持.
本文标题: 查看进程打开的文件句柄数量以及如何在Linux下修改
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/dianqi/article-259110-1.html
2的不会卡