linux資源限制配置文件是/etc/security/limits.conf;限制用戶進程的數量對於linux系統的穩定性非常重要。 limits.conf文件限制着用戶可以使用的最大文件數,最大線程,最大內存等資源使用量。
/etc/security/limits.conf 配置文件可限制文件打開數,系統進程等資源,在該文件配置中寫的最大用戶進程數是受/etc/security/limits.d/90-nproc.conf配置上限影響的。一般系統普通用戶進程數滿了都是修改/etc/security/limits.d/90-nproc.conf文件
* soft nofile 655350 #任何用戶可以打開的最大的文件描述符數量,默認1024,這里的數值會限制tcp連接 * hard nofile 655350 * soft nproc 655350 #任何用戶可以打開的最大進程數 * hard nproc 650000 @student hard nofile 65535 @student soft nofile 4096 @student hard nproc 50 #學生組中的任何人不能擁有超過50個進程,並且會在擁有30個進程時發出警告 @student soft nproc 30
hard和soft兩個值都代表什么意思呢? soft是一個警告值,而hard則是一個真正意義的閥值,超過就會報錯
一、所有用戶創建的進程數
[root@os~]# ps h -Led -o user | sort | uniq -c | sort -n 1 chrony 1 dbus 2 chenpz 7 polkitd 105 www 156 root
二、系統最大打開文件描述符數
1、查看
[root@os~]# cat /proc/sys/fs/file-max 6815744
2、配置
[root@os~]# cat /etc/sysctl.conf |grep file-max fs.file-max = 6815744
三、進程最大打開文件描述符數
查看soft limit
[root@os ~]# ulimit -n 65535
查看hard limit
[root@os ~]# ulimit -Hn 65535
- 臨時設置
通過ulimit -Sn設置最大打開文件描述符數的soft limit,注意soft limit必須小於hard limit
ulimit -Sn 160000
同時設置soft limit和hard limit。對於非root用戶只能設置比原來小的hard limit。
ulimit -n 180000
- 永久設置
root權限下,在/etc/security/limits.conf中添加如下兩行,表示所有用戶最大打開文件描述符數的soft limit為102400,hard limit為104800。重啟生效
* soft nofile 102400 * hard nofile 104800
注意:設置nofile的hard limit還有一點要注意的就是hard limit不能大於/proc/sys/fs/nr_open,假如hard limit大於nr_open,注銷后將無法正常登錄。
四、查看當前系統使用的打開文件描述符數
[root@os ~]# cat /proc/sys/fs/file-nr 7584 0 6815744
其中第一個數表示當前系統已分配使用的打開文件描述符數,第二個數為分配后已釋放的(目前已不再使用),第三個數等於file-max。
五、知道了/etc/security/limits.conf中的參數含義之后,那么如何配置nofile,確定nofile的最大值呢。
使用ulimt -n命令進行測試,如果小於系統允許的最大值,設置成功,大於最大值,系統會報錯提示。
六、ulimit -a/n/H/S 都有什么含義
ulimit -a 顯示當前所有的資源限制 ulimit -H 設置硬件資源限制 ulimit -S 設置軟件資源限制 ulimit -n 設置進程最大打開文件描述符數
ulimit -u <程序數目> 用戶最多可開啟的程序數目
七、使用 ps 命令查看進程啟動的精確時間和啟動后所流逝的時間
[root@os ~]# ps -eo pid,lstart,etime,cmd | grep nginx 1334 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: master process /usr/local/openresty/nginx/sbin/nginx -c /etc/nginx/nginx.conf 1335 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: worker process 1336 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: worker process 1337 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: worker process 1338 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: worker process 1339 Tue Sep 29 17:45:02 2020 6-22:28:14 nginx: cache manager process
總結
a. 所有進程打開的文件描述符數不能超過/proc/sys/fs/file-max
b. 單個進程打開的文件描述符數不能超過user limit中nofile的soft limit c. nofile的soft limit不能超過其hard limit d. nofile的hard limit不能超過/proc/sys/fs/nr_open