日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux运维:ulimit命令修改打开文件的句柄数

發(fā)布時間:2025/3/19 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux运维:ulimit命令修改打开文件的句柄数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • ulimit命令語法
    • 參數(shù)說明:
    • 查看本機設置的參數(shù):
  • ulimit修改打開文件的句柄數(shù)
    • 場景
    • 解釋:
    • 修改
      • 1.修改file-max
      • 2.修改ulimit的open file
    • 注意事項
      • daemon進程無效
      • 服務已啟動動態(tài)調整無效

ulimit命令語法

ulimit [-aHS][-c <core文件上限>][-d <數(shù)據(jù)節(jié)區(qū)大小>][-f <文件大小>][-m <內存大小>][-n <文件數(shù)目>][-p <緩沖區(qū)大小>][-s <堆疊大小>][-t <CPU時間>][-u <程序數(shù)目>][-v <虛擬內存大小>]

參數(shù)說明:

參數(shù)英文說明中文解釋
-aall顯示目前資源限制的設定。
-ccore file size<core文件上限>設定core文件的最大值,單位為區(qū)塊。
-ddata seg size<數(shù)據(jù)節(jié)區(qū)大小> 程序數(shù)據(jù)節(jié)區(qū)的最大值,單位為KB。
-ffile size<文件大小>  shell所能建立的最大文件,單位為區(qū)塊。
-Hhard設定資源的硬性限制,管理員設置的上限。
-Ssoft軟設定資源的彈性限制,小于hard設置的上限。
-mmax locked memory設置內存中一些對程序性能影響較大的數(shù)據(jù)lock,指定可使用內存的上限,單位為KB。
-mmax memory size<內存大小>  指定可使用內存的上限,單位為KB。
-nopen files<文件數(shù)目>  指定同一時間最多可開啟的文件數(shù)。
-ppipe size<緩沖區(qū)大小>  指定管道緩沖區(qū)的大小,單位512字節(jié)。
-sstack size<堆棧大小>  指定堆棧的上限,單位為KB。
-tcpu time<CPU時間>  指定CPU使用時間的上限,單位為秒。
-umax user processes<程序數(shù)目>  用戶最多可開啟的程序數(shù)目。
-vvirtual memory<虛擬內存大小>  指定可使用的虛擬內存上限,單位為KB。

查看本機設置的參數(shù):

[root@hadoop-master 2477]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 7146 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 102400 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) 7146 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited

ulimit修改打開文件的句柄數(shù)

場景

linux系統(tǒng)默認open files數(shù)目為1024, 有時應用程序會報Too many open files的錯誤,是因為open files 數(shù)目不夠。這就需要修改ulimit和file-max。特別是提供大量靜態(tài)文件訪問的web服務器,緩存服務器(如squid), 更要注意這個問題。
網(wǎng)上的教程,都只是簡單說明要如何設置ulimit和file-max, 但這兩者之間的關系差別,并沒有仔細說明

解釋:

1. file-max man proc,可得到file-max的描述:/proc/sys/fs/file-max This file defines a system-wide limit on the number of open files for all processes. (See also setrlimit(2), which can be used by a process to set the per-process limit, RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages about running out of file handles, try increasing this value: 即file-max是設置 系統(tǒng)所有進程一共可以打開的文件數(shù)量 。同時一些程序可以通過setrlimit調用,設置每個進程的限制。如果得到大量使用完文件句柄的錯誤信息,是應該增加這個值。 也就是說,這項參數(shù)是系統(tǒng)級別的。2. ulimit Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. 即設置當前shell以及由它啟動的進程的資源限制。 顯然,對服務器來說,file-max, ulimit都需要設置,否則就可能出現(xiàn)文件描述符用盡的問題

修改

1.修改file-max

# echo 102400 > /proc/sys/fs/file-max # sysctl -w "fs.file-max=102400",前面2種重啟機器后會恢復為默認值 # vim /etc/sysctl.conf, 加入以下內容,重啟生效 fs.file-max=102400 net.nf_conntrack_max=1024000 net.netfilter.nf_conntrack_max=1024000

2.修改ulimit的open file

系統(tǒng)默認的ulimit對文件打開數(shù)量的限制是1024
方式一(臨時修改,推出后恢復默認值):

# ulimit -HSn 102400 //這只是在當前終端有效,退出之后,open files又變?yōu)槟J值。當然也可以寫到/etc/profile中,因為每次登錄終端時,都會自動執(zhí)行/etc/profile

方式二(永久修改,需要重啟主機):

# vim /etc/security/limits.conf //加入以下配置,重啟即可生效 * hard nofile 102400 * soft nofile 102400

按照第二種方式重啟后,再看,發(fā)現(xiàn)句柄數(shù)已經(jīng)改變了

[root@hadoop-master 2477]# ulimit -n 102400

注意事項

daemon進程無效

為了讓一個程序的open files數(shù)目擴大,可以在啟動腳本前面加上ulimit -HSn 102400命令。但當程序是一個daemon時,可能這種方法無效,因為沒有終端。

服務已啟動動態(tài)調整無效

如果某項服務已經(jīng)啟動,再動態(tài)調整ulimit是無效的,特別是涉及到線上業(yè)務就更麻煩了。
這時,可以考慮通過修改/proc/’程序pid’/limits來實現(xiàn)動態(tài)修改!!!(筆者通過VIM修改后報沒有權限,目前無法通過這種方式修改),可以通過啟動前修改的方式達到修改的目的。
例如:首先修改本地的打開文件數(shù),從2048修改為1024

[root@hadoop-master shell-asy]# ulimit -n 2048 [root@hadoop-master shell-asy]# ulimit -n 1024 [root@hadoop-master shell-asy]# ulimit -n 1024

然后啟動服務,并查看ulimit參數(shù)

[root@hadoop-master shell-asy]# nohup sh start-syn.sh & [2] 4542 [root@hadoop-master shell-asy]# nohup: 忽略輸入并把輸出追加到"nohup.out"[root@hadoop-master shell-asy]# cat /proc/4542/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 7146 7146 processes Max open files 1024 1024 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 7146 7146 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us

發(fā)現(xiàn)我們需要修改的文件句柄數(shù)已經(jīng)修改了

總結

以上是生活随笔為你收集整理的Linux运维:ulimit命令修改打开文件的句柄数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。