溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制

發(fā)布時(shí)間:2021-10-23 10:45:44 來(lái)源:億速云 閱讀:241 作者:小新 欄目:系統(tǒng)運(yùn)維

這篇文章主要為大家展示了“怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制”這篇文章吧。

查看任何 Linux 系統(tǒng)中當(dāng)前打開文件數(shù)的限制

要在 Linux 服務(wù)器上得到打開文件數(shù)的限制,請(qǐng)執(zhí)行以下命令,

[root@ubuntu ~]# cat /proc/sys/fs/file-max146013

上面的數(shù)字表明用戶可以在每個(gè)用戶登錄會(huì)話中打開 ‘146013’ 個(gè)文件。

[root@centos ~]# cat /proc/sys/fs/file-max149219[root@debian ~]# cat /proc/sys/fs/file-max73906

這清楚地表明,各個(gè) Linux 操作系統(tǒng)具有不同的打開文件數(shù)限制。這基于各自系統(tǒng)中運(yùn)行的依賴關(guān)系和應(yīng)用程序。

ulimit 命令

顧名思義,ulimit(用戶限制)用于顯示和設(shè)置登錄用戶的資源限制。當(dāng)我們使用 -a 選項(xiàng)運(yùn)行 ulimit 命令時(shí),它將打印登錄用戶的所有資源限制?,F(xiàn)在讓我們?cè)?Ubuntu/Debian 和 CentOS 系統(tǒng)上運(yùn)行 ulimit -a,

Ubuntu / Debian 系統(tǒng)
shashi@Ubuntu ~}$ ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 5731max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 1024      pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 5731virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited
CentOS 系統(tǒng)
shashi@centos ~}$ ulimit -acore file size          (blocks, -c) 0data seg size           (kbytes, -d) unlimitedscheduling priority             (-e) 0file size               (blocks, -f) unlimitedpending signals                 (-i) 5901max locked memory       (kbytes, -l) 64max memory size         (kbytes, -m) unlimitedopen files                      (-n) 1024pipe size            (512 bytes, -p) 8POSIX message queues     (bytes, -q) 819200real-time priority              (-r) 0stack size              (kbytes, -s) 8192cpu time               (seconds, -t) unlimitedmax user processes              (-u) 5901virtual memory          (kbytes, -v) unlimitedfile locks                      (-x) unlimited

正如我們可以在這里看到的,不同的操作系統(tǒng)具有不同的限制設(shè)置。所有這些限制都可以使用 ulimit 命令進(jìn)行配置/更改。

要顯示單個(gè)資源限制,可以在 ulimit 命令中傳遞特定的參數(shù),下面列出了一些參數(shù):

  • ulimit -n –> 顯示打開文件數(shù)限制

  • ulimit -c –> 顯示核心轉(zhuǎn)儲(chǔ)文件大小

  • umilit -u –> 顯示登錄用戶的最大用戶進(jìn)程數(shù)限制

  • ulimit -f –> 顯示用戶可以擁有的最大文件大小

  • umilit -m –> 顯示登錄用戶的最大內(nèi)存大小

  • ulimit -v –> 顯示最大內(nèi)存大小限制

使用以下命令檢查登錄用戶打開文件數(shù)量的硬限制和軟限制:

shashi@Ubuntu ~}$ ulimit -Hn1048576shashi@Ubuntu ~}$ ulimit -Sn1024

如何修復(fù)達(dá)到最大文件數(shù)限制的問(wèn)題?

讓我們假設(shè)我們的 Linux 服務(wù)器已經(jīng)達(dá)到了打開文件的最大數(shù)量限制,并希望在系統(tǒng)范圍擴(kuò)展該限制,例如,我們希望將 100000 設(shè)置為打開文件數(shù)量的限制。

root@ubuntu~]# sysctl -w fs.file-max=100000fs.file-max = 100000

上述更改將在下次重啟之前有效,因此要使這些更改在重啟后仍存在,請(qǐng)編輯文件 /etc/sysctl.conf 并添加相同的參數(shù),

root@ubuntu~]# vi /etc/sysctl.conffs.file-max = 100000

保存文件并退出。

運(yùn)行下面命令,使上述更改立即生效,而無(wú)需注銷和重新啟動(dòng)。

root@ubuntu~]# sysctl -p

現(xiàn)在驗(yàn)證新的更改是否生效。

root@ubuntu~]# cat /proc/sys/fs/file-max100000

使用以下命令找出當(dāng)前正在使用的文件描述符數(shù)量:

[root@ansible ~]# more /proc/sys/fs/file-nr1216    0       100000

注意:命令 sysctl -p 用于在不重新啟動(dòng)和注銷的情況下提交更改。

通過(guò) limit.conf 文件設(shè)置用戶級(jí)資源限制

/etc/sysctl.conf 文件用于設(shè)置系統(tǒng)范圍的資源限制,但如果要為 Oracle、MariaDB 和 Apache 等特定用戶設(shè)置資源限制,則可以通過(guò) /etc/security/limits.conf 文件去實(shí)現(xiàn)。

示例 limits.conf 如下所示,

root@ubuntu~]# cat /etc/security/limits.conf

怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制

怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制

假設(shè)我們要為 linuxtechi 用戶設(shè)置打開文件數(shù)量的硬限制和軟限制,而對(duì)于 oracle 用戶設(shè)置打開進(jìn)程數(shù)量的硬限制和軟限制,編輯文件 /etc/security/limits.conf 并添加以下行:

# hard limit for max opened files for linuxtechi userlinuxtechi       hard    nofile          4096# soft limit for max opened files for linuxtechi userlinuxtechi       soft    nofile          1024 # hard limit for max number of process for oracle useroracle           hard    nproc          8096# soft limit for max number of process for oracle useroracle           soft    nproc          4096

保存文件并退出。

注意: 如果你想對(duì)一個(gè)組而不是用戶進(jìn)行資源限制,那么也可以通過(guò) limits.conf 文件,輸入 @<組名> 代替用戶名,其余項(xiàng)都是相同的,示例如下,

# hard limit for max opened files for sysadmin group@sysadmin        hard         nofile            4096 # soft limit for max opened files for sysadmin group@sysadmin        soft         nofile            1024

驗(yàn)證新的更改是否生效:

~]# su - linuxtechi~]$ ulimit -n -H4096~]$ ulimit -n -S1024 ~]# su - oracle~]$ ulimit -H -u8096~]$ ulimit -S -u4096

注:其他主要使用的命令是 lsof,可用于找出“當(dāng)前打開了多少個(gè)文件”,這命令對(duì)管理員非常有幫助。

以上是“怎么在Linux服務(wù)器上設(shè)置ulimit和文件描述符數(shù)限制”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI