知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
目錄
系統配置
查看 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 馬上生效
以上數值僅供參考,隨着計算機發展,上面的值已經不太適合,當前流行的伺服器。