概要:
linux系統(tǒng)默認(rèn)open files數(shù)目為1024, 有時(shí)應(yīng)用程序會(huì)報(bào)Too many open files的錯(cuò)誤帝簇,是因?yàn)閛pen files 數(shù)目不夠系吩。這就需要修改ulimit和file-max繁成。特別是提供大量靜態(tài)文件訪問(wèn)的web服務(wù)器,緩存服務(wù)器(如squid), 更要注意這個(gè)問(wèn)題淑玫。
網(wǎng)上的教程巾腕,都只是簡(jiǎn)單說(shuō)明要如何設(shè)置ulimit和file-max, 但這兩者之間的關(guān)系差別,并沒(méi)有仔細(xì)說(shuō)明絮蒿。
說(shuō)明:
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)程一共可以打開(kāi)的文件數(shù)量 土涝。同時(shí)一些程序可以通過(guò)setrlimit調(diào)用佛寿,設(shè)置每個(gè)進(jìn)程的限制。如果得到大量使用完文件句柄的錯(cuò)誤信息,是應(yīng)該增加這個(gè)值冀泻。
也就是說(shuō)常侣,這項(xiàng)參數(shù)是系統(tǒng)級(jí)別的。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以及由它啟動(dòng)的進(jìn)程的資源限制弹渔。
顯然胳施,對(duì)服務(wù)器來(lái)說(shuō),file-max, ulimit都需要設(shè)置肢专,否則就可能出現(xiàn)文件描述符用盡的問(wèn)題
修改:
1.修改file-max
# echo 102400 > /proc/sys/fs/file-max
# sysctl -w "fs.file-max=102400"舞肆,前面2種重啟機(jī)器后會(huì)恢復(fù)為默認(rèn)值
# vim /etc/sysctl.conf, 加入以下內(nèi)容,重啟生效
fs.file-max=102400
net.nf_conntrack_max = 1024000
net.netfilter.nf_conntrack_max = 1024000
2.修改ulimit的open file博杖,系統(tǒng)默認(rèn)的ulimit對(duì)文件打開(kāi)數(shù)量的限制是1024
# ulimit -HSn 102400 //這只是在當(dāng)前終端有效椿胯,退出之后,open files又變?yōu)槟J(rèn)值剃根。當(dāng)然也可以寫到/etc/profile中哩盲,因?yàn)槊看蔚卿浗K端時(shí),都會(huì)自動(dòng)執(zhí)行/etc/profile
或
# vim /etc/security/limits.conf //加入以下配置狈醉,重啟即可生效
* hard nofile 102400
* soft nofile 102400
附錄:
附錄1.
為了讓一個(gè)程序的open files數(shù)目擴(kuò)大廉油,可以在啟動(dòng)腳本前面加上ulimit -HSn 102400命令。但當(dāng)程序是一個(gè)daemon時(shí)舔糖,可能這種方法無(wú)效娱两,因?yàn)闆](méi)有終端莺匠。
附錄2.
如果某項(xiàng)服務(wù)已經(jīng)啟動(dòng)金吗,再動(dòng)態(tài)調(diào)整ulimit是無(wú)效的,特別是涉及到線上業(yè)務(wù)就更麻煩了趣竣。
這時(shí)摇庙,可以考慮通過(guò)修改/proc/’程序pid’/limits來(lái)實(shí)現(xiàn)動(dòng)態(tài)修改!RB啤卫袒!
原文:[轉(zhuǎn)載]linux修改open files數(shù)