解决Too many open files问题
轉(zhuǎn)載:https://blog.csdn.net/zhuwinmin/article/details/72730288
當(dāng)用linux做高并發(fā)服務(wù)器時,會遇到"Too many open files"的錯誤。
Linux是有文件句柄限制的(open files),而且Linux默認(rèn)不是很高,一般都是1024,做高并發(fā)生產(chǎn)服務(wù)器用其實很容易就達(dá)到這個數(shù)量。
在linux中執(zhí)行ulimit -a 即可查詢linux相關(guān)的參數(shù),如下所示:
ulimit -a
用ulimit命令是可以修改這些配置的
?
命令的格式:ulimit [-SHacdefilmnpqrstuvx] [limit]
中間的參數(shù)對應(yīng)這要修改的項目。
默認(rèn)最大打開文件數(shù)(open files)最大數(shù)為1024,修改:
ulimit -n 102400
最大值為655350
命令參數(shù):
-H 設(shè)置硬件資源限制.
-S 設(shè)置軟件資源限制.
-a 顯示當(dāng)前所有的資源限制.
-c size:設(shè)置core文件的最大值.單位:blocks
-d size:設(shè)置數(shù)據(jù)段的最大值.單位:kbytes
-f size:設(shè)置創(chuàng)建文件的最大值.單位:blocks
-l size:設(shè)置在內(nèi)存中鎖定進(jìn)程的最大值.單位:kbytes
-m size:設(shè)置可以使用的常駐內(nèi)存的最大值.單位:kbytes
-n size:設(shè)置內(nèi)核可以同時打開的文件描述符的最大值.單位:n
-p size:設(shè)置管道緩沖區(qū)的最大值.單位:kbytes
-s size:設(shè)置堆棧的最大值.單位:kbytes
-t size:設(shè)置CPU使用時間的最大上限.單位:seconds
-v size:設(shè)置虛擬內(nèi)存的最大值.單位:kbytes
unlimited 是一個特殊值,用于表示不限制
ulimit命令的特點:
?
1.只對當(dāng)前tty(終端有效),若要每次都生效的話,可以把ulimit參數(shù)放到對應(yīng)用戶的.bash_profile里面;
2.ulimit命令本身就有分軟硬設(shè)置,加-H就是硬,加-S就是軟;
硬限制是可以在任何時候任何進(jìn)程中設(shè)置 ?但硬限制只能由超級用戶提起
軟限制是內(nèi)核實際執(zhí)行的限制,任何進(jìn)程都可以將軟限制設(shè)置為任意小于等于對進(jìn)程限制的硬限制的值
3.默認(rèn)顯示的是軟限制,如果運行ulimit命令修改的時候沒有加上的話,就是兩個參數(shù)一起改變生效;
永久設(shè)置
針對所有用戶的設(shè)置,在/etc/security/limits.conf文件,其是可以對系統(tǒng)用戶、組進(jìn)行cpu、文件數(shù)等限制的,通過它可以針對某個用戶或全部進(jìn)行限制。但不能超越系統(tǒng)的限制;
格式:
#<domain> ? <type> <item>?<value>
* ? ? ? ? ? soft ? nproc ? ? ? ?102400
domain:表示范圍,
a user name ? ? ? #表示某個用戶
a group name??#表示某個組
the wildcard * ? ?#表示所有用戶
the wildcard % ? ?#篩選過濾用戶
type:表示類型
soft表示可以超出,但只是警告
hard表示絕對不能超出
item:
- core - limits the core file size (KB)
- data - max data size (KB)
- fsize - maximum filesize (KB)
- memlock - max locked-in-memory address space (KB)
- nofile - max number of open file descriptors
- rss - max resident set size (KB)
- stack - max stack size (KB)
- cpu - max CPU time (MIN)
- nproc - max number of processes
- as - address space limit (KB)
- maxlogins - max number of logins for this user
- maxsyslogins - max number of logins on the system
- priority - the priority to run user process with
- locks - max number of file locks the user can hold
- sigpending - max number of pending signals
- msgqueue - max memory used by POSIX message queues (bytes)
- nice - max nice priority allowed to raise to values: [-20, 19]
- rtprio - max realtime priority
value:
unlimited表示不限制
這里將open files設(shè)置為4096采用如下命令:
ulimit -n 4096
如果想對所有用戶設(shè)置,也可以放在/etc/profile文件里面,下面是該文件里面的默認(rèn)參數(shù):
ulimit -S -c 0 > /dev/null 2>&1
總結(jié)
以上是生活随笔為你收集整理的解决Too many open files问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python飞机大战源码素材包_Pyth
- 下一篇: html浮窗音乐播放器插件,墨涩网 -