知乎专栏 |
目录
系统配置
查看 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
对于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 马上生效
以上数值仅供参考,随着计算机发展,上面的值已经不太适合,当前流行的服务器。