新聞中心
在linux平臺(tái)上,無(wú)論是客戶(hù)端程序還是服務(wù)器端程序,在進(jìn)行高并發(fā)TCP連接處理時(shí),最高的并發(fā)數(shù)量都要受到系統(tǒng)對(duì)用戶(hù)單一進(jìn)程同時(shí)可打開(kāi)文件數(shù)量的限制,下面為大家分享一下Linux中修改打開(kāi)文件數(shù)量限制具體方法。

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比烏當(dāng)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式烏當(dāng)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋烏當(dāng)?shù)貐^(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴(lài)。
系統(tǒng)環(huán)境
Centos7
為什么要限制打開(kāi)文件的數(shù)量?
因?yàn)椴僮飨到y(tǒng)需要內(nèi)存來(lái)管理每個(gè)文件,所以可以打開(kāi)的文件數(shù)可能會(huì)受到限制。由于程序也可以關(guān)閉文件處理程序,它可以創(chuàng)建任意大小的文件,直到所有可用磁盤(pán)空間都已滿(mǎn)為止。在這種情況下,安全性的一個(gè)方面是通過(guò)施加限制來(lái)防止資源耗盡。
可以看到Linux系統(tǒng)中打開(kāi)的文件描述符的最大數(shù)量,如下所示:
[root@localhost ~]# cat /proc/sys/fs/file-max
180965
該值顯示用戶(hù)每次登錄會(huì)話(huà)可以打開(kāi)的文件數(shù),你會(huì)注意到,結(jié)果可能會(huì)因系統(tǒng)而異。出于某些原因,可能需要增加限制集的值。這就是為什么Linux系統(tǒng)提供了修改這些限制的可能性(增加或減少),方法是更改每個(gè)進(jìn)程和每個(gè)系統(tǒng)打開(kāi)文件數(shù)的最大值。
方法一:使用ulimit命令
ulimit命令可用來(lái)增加在shell中打開(kāi)文件的數(shù)量。這個(gè)命令是系統(tǒng)內(nèi)置命令,因此它只影響bash和從它啟動(dòng)的程序。ulimit語(yǔ)法如下:
ulimit [選項(xiàng)] [限制數(shù)值]
下面選項(xiàng)決定了什么是有限的:
-
-a顯示當(dāng)前所有限制的報(bào)告
-
-f(文件限制)限制shell能創(chuàng)建文件的大小
-
-n限制打開(kāi)的文件描述符的數(shù)量。
-
-H和
-S它們分別被設(shè)置為硬限制和軟限制。硬限制可能不會(huì)隨之增加,但軟限制可能會(huì)增加。如果沒(méi)有提供任何選項(xiàng),ulimit將同時(shí)設(shè)置硬限制和軟限制。
查看當(dāng)前打開(kāi)文件的軟限制,可以使用下面命令:
[root@localhost ~]# ulimit -a |grep open
open files (-n) 1024
或者
[root@localhost ~]# ulimit -n
1024
如果需要查看硬限制,適應(yīng)下面命令:
[root@localhost ~]# ulimit -Hn
4096
下面修改打開(kāi)文件的數(shù)量:
[root@localhost ~]# ulimit -n 2048
然后來(lái)查看一下:
[root@localhost ~]# ulimit -Hn
2048
[root@localhost ~]# ulimit -Sn
2048
發(fā)現(xiàn),設(shè)置ulimit 值的時(shí)候,沒(méi)有指定-H或者-S,兩個(gè)限制都會(huì)設(shè)定相同的值。
現(xiàn)在的問(wèn)題是,如果退出登錄或者重新啟動(dòng)計(jì)算機(jī),該值將被重置。請(qǐng)記住,要使生效,需要編輯用戶(hù)的.bashrc或者.bash_profile配置文件,通過(guò)將ulimit命令行添加到文件的末尾,可以使參數(shù)生效。
[root@localhost ~]# echo "ulimit -n 2048" >> ~/.bashrc
在Linux中修改打開(kāi)文件數(shù)量限制的3種方法在Linux中修改打開(kāi)文件數(shù)量限制的3種方法
方法二:使用PAM模塊
最好通過(guò)名為pam_limits的PAM模塊實(shí)現(xiàn)這種限制。需要通過(guò)編輯/etc/security/limits.conf文件來(lái)配置它。這個(gè)文件包含四個(gè)基本字段:
domain:描述了在哪些實(shí)體中應(yīng)用限制。它可以是user、group(組名前面加@表示組)或匹配所有用戶(hù),使用(*)通配符。通配符不適應(yīng)與root用戶(hù)。
type:這里表示限制為硬限制還是軟限制?硬限制是由系統(tǒng)管理員添加的,在任何情況下都不能超過(guò),而用戶(hù)可以臨時(shí)超過(guò)軟限制。還可以使用破折號(hào)-來(lái)表示一個(gè)限制是硬的和軟的。請(qǐng)注意,軟限制可以增加到硬限制的值
type:它指定被限制條目的類(lèi)型??梢允莄ore(限制核心文件大小(KB)),data(最大數(shù)據(jù)大小(KB)),fsize(最大文件大小(KB)),nofile(打開(kāi)的文件描述符的最大數(shù)目),nproc(最大進(jìn)程數(shù)),等類(lèi)型。更多類(lèi)型可以使用man limits.conf查看。
type: 這里使填寫(xiě)應(yīng)用限制的數(shù)值。
下面實(shí)例可以對(duì)照了解一下。
[root@localhost ~]# tail -12 /etc/security/limits.conf
#
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
要編輯所有用戶(hù)打開(kāi)文件的最大數(shù)量,可以在文件末尾添加以下行:
[root@localhost ~]# vim /etc/security/limits.conf* hard nofile 20000* soft nofile 15000
之后,需要編輯文件/etc/pam.d/login配置文件,在最后添加以下一條內(nèi)容:
[root@localhost ~]# vim /etc/pam.d/loginsession required pam_limits.so
保存文件。然后退出登錄,或者重啟系統(tǒng)??梢钥吹杰浵拗坪陀蚕拗频闹刀夹薷某晒α耍?/p>
[root@localhost ~]# ulimit -Sn
15000
[root@localhost ~]# ulimit -Hn
20000
方法三
查看系統(tǒng)最大打開(kāi)文件描述符數(shù)量:
[root@localhost ~]# cat /proc/sys/fs/file-max
180965
臨時(shí)設(shè)置該值:
[root@localhost ~]# echo "1000000" > /proc/sys/fs/file-max
永久性設(shè)置,需要在/etc/sysctl.conf中設(shè)置,并讓它生效:
[root@localhost ~]# echo "fs.file-max = 1000000" >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
fs.file-max = 1000000
總結(jié)
所有進(jìn)程打開(kāi)的文件描述符數(shù)量不能超過(guò)/proc/sys/fs/file-max。單個(gè)進(jìn)程打開(kāi)的文件描述符數(shù)不能超過(guò)user limit中nofile的soft limit。nofile的soft limit不能超過(guò)其hard limit。
文章標(biāo)題:Linux中修改打開(kāi)文件數(shù)量限制具體方法
本文路徑:http://fisionsoft.com.cn/article/cdcgghg.html


咨詢(xún)
建站咨詢(xún)
