Linux教程之在Linux中翻开了太多文件(Too many open files)的办理办法仓酷云 ...
vim除非你打算真正的学好linux,或者说打算长久时间学习他,而且肯花大量时间vim,否则,最好别碰回覆1、
#cat/proc/sys/fs/file-max
8192
文件体系最年夜可翻开文件数
#ulimit-n
1024
程序限定只能翻开1024个文件
利用#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类系统上就肯定有. 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。 我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。 Linux是参照Unix思想设计的,理解掌握Linux必须按照Unix思维来进行。思想性的转变比暂时性的技术提高更有用,因为他能帮助你加快学习速度。 甚至目前许多应用软件都是基于它的。可是没有哪一个系统是十分完美的。 期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。? 如果你想深入学习Linux,看不懂因为文档实在是太难了。写的最好的、最全面的文档都是英语写的,最先发布的技术信息也都是用英语写的。 现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。 最好先搜寻一下论坛是否有您需要的文章。这样可以获得事半功倍的效果。 熟悉系统的基本操作,Linux的图形界面直观,操作简便,多加上机练习就可熟悉操作,在Linux下学习办公软件等常用软件。 这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。 Linux只是个内核!这点很重要,你必须理解这一点。只有一个内核是不能构成一个操作系统的。 说实话小时候没想过搞IT,也计算机了解也只是一些皮毛,至于什么UNIX,Linux,听过没见过,就更别说用过了。? 学习Linux半年了~个人认为不会的多在网上找资料网上有很多资料可以搜索到,LS那位说放手去搞。 放手去搞。尽量不要提问,运用搜索找答案,或者看wiki,从原理上理解操作系统的本质,而不是满足于使用几个技巧。尽量看英文资料。 通过自学老师给的资料和向同学请教,掌握了一些基本的操作,比如挂载优盘,编译程序,在Linux环境下运行,转换目录等等。学了这些基础才能进行下面的模拟OS程序。? 就这样,我们一边上OS理论课,一边上这个实验,这样挺互补的,老师讲课,一步一步地布置任务 一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。? 有疑问前,知识学习前,先用搜索。
页:
[1]