文件描述符限制的设置

今天在大宝的blog里看到一篇文章,<linux下更改默认句柄数的方法>:
linux下, 单个进程默认打开的最多socket是1021个, 其实是1024, 其它三个分别被: stderr, stdin, stdout占用.
想到这个数据肯定不能满足我们的服务器需求,于是到我们server启动脚本里查看修改这个限制的地方,但是居然
木有找到,只是有ulimit -c unlimited(core文件的大小限制),ulimit -s 102400(堆栈的大小设置),没有ulimit -HSn。

还以为悲剧了,我们的服务器限制了1024!!
上网找到一个命令可以查看进程所有打开的文件描述的数量(# lsof -n|awk '{print $2}'|sort|uniq -c |sort -nr|more)
(http://news.csdn.net/n/20070613/105245.html)
   4282 5661
    262 21404
    
服务器进程5661,打开了4282个文件描述符。
于是两个问题:1 为什么不是1024的限制? 2 为什么有那么多的文件描述符打开了?

第一个问题是,因为设置文件描述符的限制不止可以在shell脚本里做,还能在程序里做,而我们的server就在程序里做了。

第二个,打开一个文件就算一个,我们有2千多个场景,如果每个场景有打开二个,就有那么多(这里还不知道什么东西需要在每个场景里打开)。


总结:
1) 文件描述符限制查看:ulimit -a 或者 ulimit -n
2) 限制的设置:ulimit -HSn 大小 或者     rlimit rt;  rt.rlim_max = rt.rlim_cur = 大小;INT iSetRet = setrlimit(RLIMIT_NOFILE, &rt);


参考文章:http://blog.sina.com.cn/s/blog_5c93b2ab0100p230.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值