Linux监控openfile

半兽人 发表于: 2016-03-21   最后更新时间: 2023-10-31 11:08:45  
{{totalSubscript}} 订阅, 8,391 游览

在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。

查看当前系统打开的文件数量

lsof | wc -l
watch "lsof | wc -l"

查看某一进程的打开文件数量

lsof -p pid | wc -l 
lsof -p 1234 | wc -l

查看每个用户最大允许打开文件数量

ulimit -a

www.orchome.com@ubuntu:~$ ulimit -a  
core file size          (blocks, -c) 0  
data seg size           (kbytes, -d) unlimited  
scheduling priority             (-e) 20  
file size               (blocks, -f) unlimited  
pending signals                 (-i) 16382  
max locked memory       (kbytes, -l) 64  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 1024  
pipe size            (512 bytes, -p) 8  
POSIX message queues     (bytes, -q) 819200  
real-time priority              (-r) 0  
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) unlimited  
virtual memory          (kbytes, -v) unlimited  
file locks                      (-x) unlimited

其中open files (-n) 1024表示每个用户最大允许打开的文件数量是1024

设置open files数值方法

ulimit -n 65535

www.orchome.com@ubuntu:~$ ulimit -n 65535
www.orchome.com@ubuntu:~$ ulimit -a
core file size          (blocks, -c) 0  
data seg size           (kbytes, -d) unlimited  
scheduling priority             (-e) 20  
file size               (blocks, -f) unlimited  
pending signals                 (-i) 16382  
max locked memory       (kbytes, -l) 64  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 65535  
pipe size            (512 bytes, -p) 8  
POSIX message queues     (bytes, -q) 819200  
real-time priority              (-r) 0  
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) unlimited  
virtual memory          (kbytes, -v) unlimited  
file locks                      (-x) unlimited

这样就可以把当前用户的最大允许打开文件数量设置为65535了,但这种设置方法在重启后会还原为默认值。

永久设置方法

vim /etc/security/limits.conf

在最后加入

* soft nofile 65535
* hard nofile 65535

最前的 * 表示所有用户,可根据需要设置某一用户,例如

zhangSan soft nofile 65535
zhangSan hard nofile 65535

改完后注销一下就能生效。

更新于 2023-10-31

查看Linux更多相关的文章或提一个关于Linux的问题,也可以与我们一起分享文章