仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3215|回复: 18
打印 上一主题 下一主题

[其他Linux] Linux教程之在Linux中翻开了太多文件(Too many open files)的办理办法仓酷云 ...

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:37:59 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
vim除非你打算真正的学好linux,或者说打算长久时间学习他,而且肯花大量时间vim,否则,最好别碰
回覆1、
[root@lxadminnginx]#cat/proc/sys/fs/file-max
8192
文件体系最年夜可翻开文件数
[root@lxadminnginx]#ulimit-n
1024
程序限定只能翻开1024个文件
利用[root@lxadminnginx]#ulimit-n8192调剂一下
大概永世调剂翻开文件数可在启动文件/etc/rc.d/rc.local开端增加(在/etc/sysctl.conf开端增加fs.file-max=xxx有效)
ulimit-n8192
回覆2、
Linux内核偶然会呈报“Toomanyopenfiles”,原因是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的变量到符合的值。如许会在每次重启以后失效。假如设置值够年夜,跳过下步。
#echo2048>/proc/sys/fs/file-max
编纂文件/etc/sysctl.conf,拔出下行。
fs.file-max=8192
2.在/etc/security/limits.conf文件中设置最年夜翻开文件数,上面是一行提醒:
#
增加以下这行。
*-nofile8192
这行设置了每一个用户的默许翻开文件数为2048。注重"nofile"项有两个大概的限定措施。就是项下的hard和soft。要使修正过得最年夜翻开文件数失效,必需对这两种限定举行设定。假如利用"-"字符设定,则hard和soft设定会同时被设定。
硬限定标明soft限定中所能设定的最年夜值。soft限定指的是以后体系失效的设置值。hard限定值能够被一般用户下降。可是不克不及增添。soft限定不克不及设置的比hard限定更高。只要root用户才干够增添hard限定值。
当增添文件限定形貌,能够复杂的把以后值双倍。例子以下,假如你要进步默许值1024,最好进步到2048,假如还要持续增添,就必要设置成4096。
别的一种情形是在创立索引的时分,也有两种大概,一种是兼并因子太小,招致创立文件数目凌驾操纵体系限定,这时候能够修正兼并因子,也能够修正操纵体系的翻开文件数限定;别的一种是兼并因子受假造机内存的限定,没法调剂到更年夜,而必要索引的doc数目又十分的年夜,这个时分就只能经由过程修正操纵体系的翻开文件数限定来办理了。
在此基本上,我还修正了以下一个设置文件
vi/etc/sysctl.conf
增加:
#Decreasethetimedefaultvaluefortcp_fin_timeoutconnection
net.ipv4.tcp_fin_timeout=30
#Decreasethetimedefaultvaluefortcp_keepalive_timeconnection
net.ipv4.tcp_keepalive_time=1800
#Turnofftcp_window_scaling
net.ipv4.tcp_window_scaling=0
#Turnoffthetcp_sack
net.ipv4.tcp_sack=0
#Turnofftcp_timestamps
net.ipv4.tcp_timestamps=0
然后servicenetworkrestart,这些都和TCPsockets有关的优化。
别的必要在/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与softopenfiles的辨别,一般用户受hard的限定,不管ulimit-n$数值调到多高,都跑不到/etc/security/limits.conf里nofile的值.
如许的优化后lsof-p$java_pid|wc-l能够跑到4千以上都不会抛出toomanyopenfiles。

看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.
兰色精灵 该用户已被删除
沙发
 楼主| 发表于 2015-4-9 17:51:16 | 显示全部楼层
说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-8 06:59

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表