linux中/etc/security/limits.conf配置文件說明

linux資源限制配置文件是/etc/security/limits.conf;限制用戶進程的數量對于linux系統的穩定性非常重要。
limits.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則是一個真正意義的閥值,超過就會報錯

一、所有用戶創建的進程數:

$ ps h -Led -o user | sort | uniq -c | sort -n
      2 shtermuser
     11 zabbix
    206 elasticsearch
    490 root

二、系統最大打開文件描述符數:

  1. 查看
$ cat /proc/sys/fs/file-max
6553600
  1. 設置
$ vim /etc/sysctl.conf
fs.file-max = 6553600

三、進程最大打開文件描述符數

  1. 查看
    ulimit -n默認查看的是soft limit
$ ulimit -n
170000
  • 查看hard limit
$ ulimit -Hn
170000
  1. 設置
  • 臨時設置
#通過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,注銷后將無法正常登錄。

四、查看當前系統使用的打開文件描述符數

$ cat /proc/sys/fs/file-nr
5664        0        186405

其中第一個數表示當前系統已分配使用的打開文件描述符數,第二個數為分配后已釋放的(目前已不再使用),第三個數等于file-max。

五、知道了/etc/security/limits.conf中的參數含義之后,那么如何配置nofile,確定nofile的最大值呢。

解答:使用ulimt -n命令進行測試,如果小于系統允許的最大值,設置成功,大于最大值,系統會報錯提示。

$ ulimit -n 1100000
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048576
$ ulimit -n 1048577
-bash: ulimit: open files: cannot modify limit: Operation not permitted
$ ulimit -n 1048575
$ ulimit -n 1048576

六、ulimit -a/n/H/S 都有什么含義

ulimit -a 顯示當前所有的資源限制
ulimit -H 設置硬件資源限制
ulimit -S 設置軟件資源限制
ulimit -n 設置進程最大打開文件描述符數

ulimit -u <程序數目>  用戶最多可開啟的程序數目

總結

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

參考:修改linux 最大文件限制數 ulimit

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容