正在停止Linux体系操做的时分,有时会跳没too many open files提示,即翻开文件太多的答题,其否能是您正在封闭步伐的时分出有一般封闭,上面小编便学您逢到too many open files提示该若何处理。
答复1、
[root@lxadmin nginx]# cat /proc/sys/fs/file-max
8192
文件体系最年夜否翻开文件数
[root@lxadmin nginx]# ulimit -n
1024
步伐限定只能翻开1024个文件
运用[root@lxadmin nginx]# ulimit -n 8192调解一高
或者永恒调解翻开文件数 否正在封动文件/etc/rc.d/rc.local终首加添(正在/etc/sysctl.conf终首加添fs.file-max=xxx无效)
ulimit -n 8192
答复2、
Linux内核有时会陈诉“Too many open files”,原因是file-max默许值(8096)过小。要处理那个答题,能够root身份执止高列号令(或将它们参加/etc/rcS.d/*高的init剧本。)
# echo “65536” 》 /proc/sys/fs/file-max # 合用于2.2战2.4版内核
# echo “131072” 》 /proc/sys/fs/inode-max # 仅合用于2.2版内核
答复3、
法子是批改操做体系的翻开文件数目限定,要领以下:
1. 依照最年夜翻开文件数目的需供配置体系, 而且经由过程查抄/proc/sys/fs/file-max文件去确认最年夜翻开文件数曾经被邪确配置。
# cat /proc/sys/fs/file-max
若是配置值过小, 批改文件/etc/sysctl.conf的变质到适宜的值。 那样会正在每一次重封之后熟效。 若是配置值够年夜,跳过高步。
# echo 2048 》 /proc/sys/fs/file-max
编纂文件/etc/sysctl.conf,插进高止。
fs.file-max = 8192
2. 正在/etc/security/limits.conf文件外配置最年夜翻开文件数, 上面是一止提示:
#
加添以下那止。
* - nofile 8192
那止配置了每一个用户的默许翻开文件数为2048。 留意“nofile”项有二个否能的限定措施。便是项高的hard战soft。 要使批改过失最年夜翻开文件数熟效,必需对那二种限定停止设定。 若是运用“-”字符设定, 则hard战soft设定会异时被设定。
软限定表白soft限定外所能设定的最年夜值。 soft限定指的是以后体系熟效的配置值。 hard限定值能够被通俗用户低落。然而不克不及增多。 soft限定不克不及配置的比hard限定更下。 只要root用户能力够增多hard限定值。
当增多文件限定形容,能够简略的把以后值单倍。 例子以下, 若是您要进步默许值1024, 最佳进步到2048, 若是借要接续增多, 便须要配置成4096。
别的一种状况是正在创立索引的时分,也有二种否能,一种是 兼并果子过小,招致创立文件数目跨越操做体系限定,那时能够批改兼并果子,也能够批改操做体系的翻开文件数限定;别的一种是兼并果子蒙虚构机内存的限定,无奈调解到更年夜,而 须要索引的doc 数目又十分的年夜,那个时分便只能经由过程批改操做体系的翻开文件数限定去处理了。
正在此根底上,尔借批改了如下一个设置文件
vi /etc/sysctl.conf
加添:
# Decrease the time default value for tcp_fin_timeout connection
net.ipv4.tcp_fin_timeout = 30
# Decrease the time default value for tcp_keepalive_time connection
net.ipv4.tcp_keepalive_time = 1800
# Turn off tcp_window_scaling
net.ipv4.tcp_window_scaling = 0
# Turn off the tcp_sack
net.ipv4.tcp_sack = 0
#Turn off tcp_timestamps
net.ipv4.tcp_timestamps = 0
而后 service network restart,那些皆战TCP sockets有闭的劣化。
别的须要正在 /etc/rc.d/rc.local面加添未使失重封的时分熟效。
echo “30”》/proc/sys/net/ipv4/tcp_fin_timeout
echo “1800”》/proc/sys/net/ipv4/tcp_keepalive_time
echo “0”》/proc/sys/net/ipv4/tcp_window_scaling
echo “0”》/proc/sys/net/ipv4/tcp_sack
echo “0”》/proc/sys/net/ipv4/tcp_timestamps
果为没有是一切的步伐皆正在root高跑的,一切linux有对hard 取soft open files 的区别,通俗用户蒙hard的限定,无论ulimit -n $数值调到多下,皆跑没有到 /etc/security/limits.conf面nofile的值。
那样的劣化后 lsof -p $java_pid|wc -l能够跑到4千以上皆没有会扔没too many open files。
下面便是too many open files提示的处理要领的引见了,您能够经由过程更改体系设定值、封闭过剩步伐等去处理该答题,是否是很简略呢?赶快尝尝吧。
相关文章