Linux运维:ulimit命令修改打开文件的句柄数
文章目錄
- ulimit命令語法
- 參數(shù)說明:
- 查看本機(jī)設(shè)置的參數(shù):
- ulimit修改打開文件的句柄數(shù)
- 場景
- 解釋:
- 修改
- 1.修改file-max
- 2.修改ulimit的open file
- 注意事項(xiàng)
- daemon進(jìn)程無效
- 服務(wù)已啟動動態(tài)調(diào)整無效
ulimit命令語法
ulimit [-aHS][-c <core文件上限>][-d <數(shù)據(jù)節(jié)區(qū)大小>][-f <文件大小>][-m <內(nèi)存大小>][-n <文件數(shù)目>][-p <緩沖區(qū)大小>][-s <堆疊大小>][-t <CPU時間>][-u <程序數(shù)目>][-v <虛擬內(nèi)存大小>]參數(shù)說明:
| -a | all | 顯示目前資源限制的設(shè)定。 |
| -c | core file size | <core文件上限>設(shè)定core文件的最大值,單位為區(qū)塊。 |
| -d | data seg size | <數(shù)據(jù)節(jié)區(qū)大小> 程序數(shù)據(jù)節(jié)區(qū)的最大值,單位為KB。 |
| -f | file size | <文件大小> shell所能建立的最大文件,單位為區(qū)塊。 |
| -H | hard | 設(shè)定資源的硬性限制,管理員設(shè)置的上限。 |
| -S | soft | 軟設(shè)定資源的彈性限制,小于hard設(shè)置的上限。 |
| -m | max locked memory | 設(shè)置內(nèi)存中一些對程序性能影響較大的數(shù)據(jù)lock,指定可使用內(nèi)存的上限,單位為KB。 |
| -m | max memory size | <內(nèi)存大小> 指定可使用內(nèi)存的上限,單位為KB。 |
| -n | open files | <文件數(shù)目> 指定同一時間最多可開啟的文件數(shù)。 |
| -p | pipe size | <緩沖區(qū)大小> 指定管道緩沖區(qū)的大小,單位512字節(jié)。 |
| -s | stack size | <堆棧大小> 指定堆棧的上限,單位為KB。 |
| -t | cpu time | <CPU時間> 指定CPU使用時間的上限,單位為秒。 |
| -u | max user processes | <程序數(shù)目> 用戶最多可開啟的程序數(shù)目。 |
| -v | virtual memory | <虛擬內(nèi)存大小> 指定可使用的虛擬內(nèi)存上限,單位為KB。 |
查看本機(jī)設(shè)置的參數(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) unlimitedulimit修改打開文件的句柄數(shù)
場景
linux系統(tǒng)默認(rèn)open files數(shù)目為1024, 有時應(yīng)用程序會報Too many open files的錯誤,是因?yàn)閛pen files 數(shù)目不夠。這就需要修改ulimit和file-max。特別是提供大量靜態(tài)文件訪問的web服務(wù)器,緩存服務(wù)器(如squid), 更要注意這個問題。
網(wǎng)上的教程,都只是簡單說明要如何設(shè)置ulimit和file-max, 但這兩者之間的關(guān)系差別,并沒有仔細(xì)說明
解釋:
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是設(shè)置 系統(tǒng)所有進(jìn)程一共可以打開的文件數(shù)量 。同時一些程序可以通過setrlimit調(diào)用,設(shè)置每個進(jìn)程的限制。如果得到大量使用完文件句柄的錯誤信息,是應(yīng)該增加這個值。 也就是說,這項(xiàng)參數(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. 即設(shè)置當(dāng)前shell以及由它啟動的進(jìn)程的資源限制。 顯然,對服務(wù)器來說,file-max, ulimit都需要設(shè)置,否則就可能出現(xiàn)文件描述符用盡的問題修改
1.修改file-max
# echo 102400 > /proc/sys/fs/file-max # sysctl -w "fs.file-max=102400",前面2種重啟機(jī)器后會恢復(fù)為默認(rèn)值 # vim /etc/sysctl.conf, 加入以下內(nèi)容,重啟生效 fs.file-max=102400 net.nf_conntrack_max=1024000 net.netfilter.nf_conntrack_max=10240002.修改ulimit的open file
系統(tǒng)默認(rèn)的ulimit對文件打開數(shù)量的限制是1024
方式一(臨時修改,推出后恢復(fù)默認(rèn)值):
方式二(永久修改,需要重啟主機(jī)):
# vim /etc/security/limits.conf //加入以下配置,重啟即可生效 * hard nofile 102400 * soft nofile 102400按照第二種方式重啟后,再看,發(fā)現(xiàn)句柄數(shù)已經(jīng)改變了
[root@hadoop-master 2477]# ulimit -n 102400注意事項(xiàng)
daemon進(jìn)程無效
為了讓一個程序的open files數(shù)目擴(kuò)大,可以在啟動腳本前面加上ulimit -HSn 102400命令。但當(dāng)程序是一個daemon時,可能這種方法無效,因?yàn)闆]有終端。
服務(wù)已啟動動態(tài)調(diào)整無效
如果某項(xiàng)服務(wù)已經(jīng)啟動,再動態(tài)調(diào)整ulimit是無效的,特別是涉及到線上業(yè)務(wù)就更麻煩了。
這時,可以考慮通過修改/proc/’程序pid’/limits來實(shí)現(xiàn)動態(tài)修改!!!(筆者通過VIM修改后報沒有權(quán)限,目前無法通過這種方式修改),可以通過啟動前修改的方式達(dá)到修改的目的。
例如:首先修改本地的打開文件數(shù),從2048修改為1024
然后啟動服務(wù),并查看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)修改了
總結(jié)
以上是生活随笔為你收集整理的Linux运维:ulimit命令修改打开文件的句柄数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql创建数据库并且指定utf-8编
- 下一篇: ZooKeeper学习:CentOS7下