Chinaunix
标题:
poll函数的用法
[打印本页]
作者:
hxs880
时间:
2012-04-06 17:23
标题:
poll函数的用法
在linux下select函数的最大可管理的socket连接数是FD_SETSIZE=1024,在网上看见说使用poll的话可以突破1024的限制,但是我在把程序由select改为poll以后连接数到了1024以后,仍然不能建立连接,还是有1024这个限制,不知道poll是不是还是跟select一样,受到linux内核的限制?
作者:
hxs880
时间:
2012-04-06 17:38
poll是不是还跟操作系统某些参数有关联关系啊?
作者:
sonicling
时间:
2012-04-06 17:59
poll 没有限制
作者:
hellioncu
时间:
2012-04-06 20:45
ulimit -n
作者:
hxs880
时间:
2012-04-07 11:02
ulimit -n文件打开句柄个数
poll函数是不是还跟这个参数有关系?最大上限就是ulimit -n的值?
作者:
guhan010
时间:
2012-04-07 23:39
要在unix系统里进行配置。
作者:
wi1she
时间:
2012-04-08 16:46
ulimit -n就是控制你单个进程能打开的最大文件描述符的数量。默认的是1024,所以你的进程在建立了1024个连接后就不能在新建链接了,因为accept不能再得到文件描述符了。你可以用ulimit -n X去改当前这个shell的打开文件的最大数量。然后再在这个shell上启动你的服务器程序。那样他会继承shell的这个属性。就可以打开更多的链接了。
作者:
hxs880
时间:
2012-04-09 10:01
测试了一下,确实这样的,ulimit -n显示可以open files的个数是1024,一到这个数网络连接数就上不去了,把这个数改成10240的时候就可以上去了,在网上说epoll的方式比poll更好,它是受 /proc/sys/fs/file-max的个数限制,是不是epoll也会受到open files的限制?
作者:
hxs880
时间:
2012-04-09 15:08
再问一下accept函数是否受open files个数限制?ulimit -n
作者:
hxs880
时间:
2012-04-10 09:20
查了一下网上的资料,socket连接句柄也是一种文件描述符,所以理论上来说一个进程socket最大连接数与进程可以打开的文件最大描述符个数相等,用户最大文件描述符个数受ulimit -n的影响,所以accept是受ulimit -n的影响,epoll同时也是受ulimit -n的影响。而/proc/sys/fs/file-max是操作系统启动时根据硬件(主要是系统内存)计算出的所有用户可同时打开文件个数,硬性限制!
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2