centos8平台使用ulimit做系統資源限制

2022-06-28 13:27:08 字數 4435 閱讀 5117

1,

ulimit 用於shell啟動程序所占用的資源,可用於修改系統資源限制

2,使用ulimit -a 可以檢視當前系統的所有限制值

使用ulimit -n 《可以同時開啟的檔案數》 設定使用者可以同時開啟的最大檔案數(max open files)

新裝的linux預設只有1024,當作為併發訪問量大的伺服器時,很容易遇到error: too many open files。

error: too many open files

對應的原始碼可以訪問這裡獲取: 

[root@centos8 limits.d]# whereis

ulimit

ulimit: /usr/bin/ulimit

[root@centos8 limits.d]# rpm -qf /usr/bin/ulimit

bash-4.4.19-10.el8.x86_64

屬於bash這個包,預設已經安裝

1,檢視版本:

ulimit沒有提供顯示版本的引數,

但它屬於bash包,可以檢視bash的版本

[root@centos8 limits.d]# bash --version

gnu bash,版本

4.4.19(1)-release (x86_64-redhat-linux-gnu)

2016

free software foundation, inc.

許可證 gplv3+: gnu gpl 許可證第三版或者更新版本 //

gnu.org/licenses/gpl.html>

本軟體是自由軟體,您可以自由地更改和重新發布。

在法律許可的情況下特此明示,本軟體不提供任何擔保。

2,檢視幫助

[root@centos8 limits.d]# ulimit --help

3,檢視手冊

[root@centos8 limits.d]# man ulimit

1,列出當前的所有限制

#-a: 所有當前限制都被報告

[root@centos8 ~]# ulimit -a

core

file size (blocks, -c) unlimited

data seg size (kbytes, -d) unlimited

scheduling priority (-e) 0

file size (blocks, -f) unlimited

pending signals (-i) 14898

max locked memory (kbytes, -l) 16384

max memory size (kbytes, -m) unlimited

open files (-n) 1024

pipe size (

512 bytes, -p) 8

posix message queues (bytes, -q) 819200

real-time priority (-r) 0

stack size (kbytes, -s) 8192

cpu

time (seconds, -t) unlimited

max user processes (-u) 14898

virtual memory (kbytes, -v) unlimited

file locks (-x) unlimited

各字段的說明:

core file size     -c:設定core檔案的最大值.單位:blocks

data seg size      -d:設定資料段的最大值.單位:kbytes

scheduling priority -e:最高的排程優先順序 (`nice')

file size          -f:設定建立檔案的最大值.單位:blocks

pending signals    -i :最多的可以掛起的訊號數

max locked memory  -l:設定在記憶體中鎖定程序的最大值.單位:kbytes

max memory size    -m:設定可以使用的常駐記憶體的最大值.單位:kbytes

open files         -n:設定核心可以同時開啟的檔案描述符的最大值.單位:n

pipe size          -p:設定管道緩衝區的最大值.單位:kbytes

stack size         -s:設定堆疊的最大值.單位:kbytes

cpu time           -t:設定cpu使用時間的最大上限.單位:seconds

virtual memory     -v:設定虛擬記憶體的最大值.單位:kbytes

max user processes:    -u   使用者最多可開啟的程式數目

file locks                      -x :最大的檔案鎖數量

2,檢視/設定使用者最多開啟的檔案描述符數量

#-n: open files 

[root@centos8 limits.d]# ulimit -n

1024

[root@centos8 limits.d]# ulimit -n 65535

[root@centos8 limits.d]# ulimit -n

65535

3,檢視/設定使用者最多可開啟的程序數目

#-u: max user processes

[root@centos8 limits.d]# ulimit -u

14898

[root@centos8 limits.d]# ulimit -u 65535

[root@centos8 limits.d]# ulimit -u

65535

4,其他引數:

#-s指soft 限制 (只給出警告資訊,而不是硬限制)

#-h指hard 限制

[root@centos8 limits.d]# ulimit -shn 65535

說明:此命令等效 ulimit -n 65535

1,使用 ulimit -n 65535 可即時修改,但重啟後就無效了。

要設定limits.conf配置檔案才可以永久生效

2,修改資源的配置檔案

[root@centos8 ~]$ vi /etc/security/limits.conf

增加內容:

* soft nofile 65535

* hard nofile 65535

* soft nproc 65535

* hard nproc 65535

內容說明:

limits.conf的格式如下:

domain: 起作用的範圍,

萬用字元*表示是針對所有使用者的限制

也可以指定使用者,例如:root

type:  取值: soft,hard 和 -

soft 指的是當前系統生效的設定值(警告)

hard 表明系統中所能設定的最大值(錯誤)

soft 的限制不能比har 限制高,- 表明同時設定了 soft 和 hard 的值。

item:

nofile - 開啟的檔案描述符的最大數目

nproc - 程序最大數量

編輯完成後,重啟伺服器使生效

因為ulimit和limits.conf的配置只針對登入使用者,

而對systemd管理的服務不起作用,

服務的limit要在service檔案中單獨指定

請參考這一篇:

centos8平台使用lsof

lsof,list open files 列出當前系統開啟檔案的工具。在linux環境下,任何事物都以檔案的形式存在,所以lsof通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體 對應的原始碼可以訪問這裡獲取 1,檢視lsof所屬的包 root blog whereis lsof lsof ...

centos8平台使用mpstat監控cpu

mpstat是 multiprocessor statistics的縮寫,是實時cpu監控工具。在多cpu系統裡,其不但能檢視所有cpu的平均狀況資訊,而且能夠檢視特定cpu的資訊 它的資料來自於 proc stat檔案 對應的原始碼可以訪問這裡獲取 1,檢視所屬的包 root blog where...

centos8平台使用iotop監控磁碟io

iotop是監視磁碟i o使用狀況的top類工具,可以針對程序和執行緒統計io的使用情況 對應的原始碼可以訪問這裡獲取 root database1 yum install iotop root database1 iotop help usage usr sbin iotop options th...