免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6342 | 回复: 9
打印 上一主题 下一主题

poll函数的用法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-06 17:23 |只看该作者 |倒序浏览
在linux下select函数的最大可管理的socket连接数是FD_SETSIZE=1024,在网上看见说使用poll的话可以突破1024的限制,但是我在把程序由select改为poll以后连接数到了1024以后,仍然不能建立连接,还是有1024这个限制,不知道poll是不是还是跟select一样,受到linux内核的限制?

论坛徽章:
0
2 [报告]
发表于 2012-04-06 17:38 |只看该作者
poll是不是还跟操作系统某些参数有关联关系啊?

论坛徽章:
0
3 [报告]
发表于 2012-04-06 17:59 |只看该作者
poll 没有限制

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
4 [报告]
发表于 2012-04-06 20:45 |只看该作者
ulimit -n

论坛徽章:
0
5 [报告]
发表于 2012-04-07 11:02 |只看该作者
ulimit -n文件打开句柄个数
poll函数是不是还跟这个参数有关系?最大上限就是ulimit -n的值?

论坛徽章:
0
6 [报告]
发表于 2012-04-07 23:39 |只看该作者
要在unix系统里进行配置。

论坛徽章:
0
7 [报告]
发表于 2012-04-08 16:46 |只看该作者
ulimit -n就是控制你单个进程能打开的最大文件描述符的数量。默认的是1024,所以你的进程在建立了1024个连接后就不能在新建链接了,因为accept不能再得到文件描述符了。你可以用ulimit -n X去改当前这个shell的打开文件的最大数量。然后再在这个shell上启动你的服务器程序。那样他会继承shell的这个属性。就可以打开更多的链接了。

论坛徽章:
0
8 [报告]
发表于 2012-04-09 10:01 |只看该作者
测试了一下,确实这样的,ulimit -n显示可以open files的个数是1024,一到这个数网络连接数就上不去了,把这个数改成10240的时候就可以上去了,在网上说epoll的方式比poll更好,它是受 /proc/sys/fs/file-max的个数限制,是不是epoll也会受到open files的限制?

论坛徽章:
0
9 [报告]
发表于 2012-04-09 15:08 |只看该作者
再问一下accept函数是否受open files个数限制?ulimit -n

论坛徽章:
0
10 [报告]
发表于 2012-04-10 09:20 |只看该作者
查了一下网上的资料,socket连接句柄也是一种文件描述符,所以理论上来说一个进程socket最大连接数与进程可以打开的文件最大描述符个数相等,用户最大文件描述符个数受ulimit -n的影响,所以accept是受ulimit -n的影响,epoll同时也是受ulimit -n的影响。而/proc/sys/fs/file-max是操作系统启动时根据硬件(主要是系统内存)计算出的所有用户可同时打开文件个数,硬性限制!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP