Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

49.2. ulimit

查看 ulimit

		
ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 1024
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 2048
cpu time (seconds, -t) unlimited
max user processes (-u) 77824
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
			
		

49.2.1. open files

对于linux系统,所有设备都以映射为设备文件的方式存在,包括硬件(键盘,鼠标,打印机,显示器,串口,并口,USB,硬盘,内存,网卡,声卡,显卡,等等....),还有软件(管道,socket),访问这些资源,就相当与打开一个文件,

所以"open files"文件数限制很重要,默认值根本不能满足我们。

查看文件打开数

			
$ cat /proc/sys/fs/file-nr

3200 0 197957
已分配文件句柄的数目 已使用文件句柄的数目 文件句柄的最大数目

查看所有进程的文件打开数
lsof |wc -l
查看某个进程打开的文件数
lsof -p pid |wc -l
			
			

临时更改

			
ulimit -n 65536
or
# ulimit -SHn 65536
or
# echo "65535" > /proc/sys/fs/file-max			
			
			

永久更改

/etc/security/limits.conf

			
nobody soft nofile 40960
root soft nofile 40960
nobody hard nofile 40960
root hard nofile 40960
daemon soft nofile 40960
daemon hard nofile 40960			
			
			

更省事的方法

			
* soft nofile 40960
* hard nofile 40960			
			
			

最大线程数限制 threads-max

查看当前值

		
# cat /proc/sys/kernel/threads-max
32624		
				
		

设置

有多种方法加大Linux的threads数,下买是临时更改

		
sysctl -w kernel.threads-max=65536
echo 65536 > /proc/sys/kernel/threads-max
				
		

永久修改

		
编辑/etc/sysctl.conf 增加
kernel.threads-max = 65536
#sysctl -p 马上生效		
		
		

以上数值仅供参考,随着计算机发展,上面的值已经不太适合,当前流行的服务器。