`
wx1569567608
  • 浏览: 58676 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

linux 下select的1024限制

 
阅读更多

http://www.bubuko.com/infodetail-769475.html

1024限定的不只是监听的个数,还是文件描述符的

最大值,注意,是值 

今天编写模拟客户端程序进行测试,使用了select。之前一直错记成1024是对fd_set里fd个数的限制(我的程序是每次select一个fd,所以自我感觉没问题),结果在socket连接个数到达1050~1100时,总发生段错误。

查看了core文件,反复理清程序的思路,都找不到问题点。更让我费解的是,通过注释部分代码(都是局部变量相关的),结果程序变成socket连接到达1500左右时发生段错误。

 

后来想到试试是不是select有问题,模拟程序不调用select,全部采用阻塞的socket,结果测试到10000个socket连接都没有问题。

 

最后在网上看到select中限定的fd的值最大值是FD_SETSIZE(我的环境下是1024),而不是个数。

也有人持反对意见,比如对值为1025的fd进行select也没问题。对此我没有测试,但结合我的实际情况是,对超过1024的fd进行select,问题不能立刻暴露(我都一直到1500了),但可能会存在

类似越界访问之类的问题(segment fault)。

 

之前还一直想不通,一直以为是类似ulimit的限制没有修改。但矛盾的是相同的配置,用poll/epoll写的服务端却可以测试到10K以上,现在终于了然。

转载于:https://my.oschina.net/u/1780368/blog/491863

分享到:
评论

相关推荐

    linux使用select实现精确定时器详解

    参数说明:slect的第一个参数nfds为fdset集合中最大描述符值加1,fdset是一个位数组,其大小限制为__FD_SETSIZE(1024),位数组的每一位代表其对应的描述符是否需要被检查。select的第二三四个参数表示需要关注读、...

    Linux网络编程 视频 教程

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) ...

    C++教程网《Linux网络编程》视频百度云地址

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) ...

    c++教程网的linux网络编程视频下载

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) ...

    linux epoll机制详解

    1.单个进程能够监视的文件描述符的数量存在最大限制,通常是1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符,文件描述符数量越多,性能越差;(在linux内核头文件中,有这样的定义:#define __FD...

    RED HAT LINUX 6大全

    9.2.2 .htaccess文件和访问限制 160 9.3 虚拟主机 161 9.3.1 基于地址的虚拟主机 161 9.3.2 基于名字的虚拟主机 162 9.4 日志记录 163 9.5 CGI和SSI 164 9.5.1 CGI 164 9.5.2 SSI 164 9.5.3 基本SSI指令 165 9.5.4 ...

    linux网络编程

    17socket编程(十二) select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) ...

    Linux程序设计 第4版.haozip01

    7.2.3 锁定状态下的读写操作 227 7.2.4 文件锁的竞争 232 7.2.5 其他锁命令 236 7.2.6 死锁 236 7.3 数据库 237 7.3.1 dbm数据库 237 7.3.2 dbm例程 238 7.3.3 dbm访问函数 239 7.3.4 其他dbm函数 242 7.4 ...

    Linux程序设计 第4版.haozip02

    7.2.3 锁定状态下的读写操作 227 7.2.4 文件锁的竞争 232 7.2.5 其他锁命令 236 7.2.6 死锁 236 7.3 数据库 237 7.3.1 dbm数据库 237 7.3.2 dbm例程 238 7.3.3 dbm访问函数 239 7.3.4 其他dbm函数 242 7.4 ...

    linux操作命令

    将权限限制在家里--加入 vi /etc/vsftpd/chroot_list 认证 然后,创建用户密码文本 vi /etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码 test 123456 接着,生成虚拟用户认证的db文件 db_load -T -t ...

    C++教程网视频:linux网络编程

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) ...

    Apache-Tomcat-8.5.5(Linux )

    事实上,目前只有Window在OS级别提供了对async io的支持,也即IOCP,在Linux还是要通过select、poll、epoll等来实现这个机制。 所以一般来说,不需要使用NIO2。当然,也可能有些场景就适合使用NIO2,不过目前来说很...

    Linux高性能服务器编程

    1.5.2 ARP高速缓存的查看和修改 1.5.3 使用tcpdump观察ARP通信过程 1.6 DNS工作原理 1.6.1 DNS查询和应答报文详解 1.6.2 Linux下访问DNS服务 1.6.3 使用tcpdump观察DNS通信过程 1.7 socket和TCPIP协议族的...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    select限制 poll 18socket编程(十三) epoll使用 epoll与select、poll区别 epoll LT/ET模式 19socket编程(十四) UDP特点 UDP客户/服务基本模型 UDP回射客户/服务器 UDP注意点 20socket编程(十五) udp聊天室实现...

    linux programming instances网络编程教程 附源代码

    本书通过55个精彩的实例,全面剖析了在Linux下编写网络应用程序的方法,并阐述了网络协议架构和开发规范。为了适应不同读者的需要,本书从最基本的Linux系统操作到网络技术的基本理念,逐步深入至Linux/UNIX下具体的...

    cmd操作命令和linux命令大全收集

    例如“DEL/AR *.*”表示删除当前目录下所有只读文件,“DEL/A-S *.*”表示删除当前目录下除系统文件以外的所有文件 del /S /Q 目录 或用:rmdir /s /Q 目录 /S删除目录及目录下的所有子目录和文件。同时使用参数/Q ...

    Oracle视频.zip

    1.Oracle在linux下单机安装rar 2Linux6,5安装0rade-11g-RAC(1rar 3Linux6.5安装0race-1g-RAC(2)rar 4.linux6.5安装Dracle11gRAC(3】rar 5.PL-SQL developer的安装使用与配置,rar 6使用selecti语句检索数据,rar 7...

    nginx v1.5.9 for windows

    3 增加Windows和Linux平台下的多线程支持(Unix下尚未实现) 多线程可支持select epoll wsa和iocp网络IO模型 并支持SSL连接 通过上述改进 Nginx在Windows平台下的性能得到大幅提高 其并发连接数一般情况下可达到...

Global site tag (gtag.js) - Google Analytics