Linux select 文件描述符1024限制------此处容易导致core dump
2017-06-25 12:58
369 查看
转载地址: http://blog.csdn.net/sxtobj/article/details/53170782
最近系统出现宕机的情况,分析core文件,所有的线程都在select处。
最后怀疑是文件描述符超过了1024。但是想到Apache也是采用select的io模型。所以还是很不理解。
查看了Linux的内核源码linux-2.6.32。
static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS;
fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
}
#define __NFDBITS (8 * sizeof(unsigned long))
typedef struct {
unsigned long fds_bits [__FDSET_LONGS];
} __kernel_fd_set;
#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS)
#define __FD_SETSIZE 1024
起关键作用的就是红字部分。
最近系统出现宕机的情况,分析core文件,所有的线程都在select处。
最后怀疑是文件描述符超过了1024。但是想到Apache也是采用select的io模型。所以还是很不理解。
查看了Linux的内核源码linux-2.6.32。
static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
{
unsigned long _tmp = fd / __NFDBITS;
unsigned long _rem = fd % __NFDBITS;
fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
}
#define __NFDBITS (8 * sizeof(unsigned long))
typedef struct {
unsigned long fds_bits [__FDSET_LONGS];
} __kernel_fd_set;
#define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS)
#define __FD_SETSIZE 1024
起关键作用的就是红字部分。
相关文章推荐
- Linux select 文件描述符1024限制
- select的fd超过1024将会非常危险------FD_SET导致core dump
- select的fd超过1024将会非常危险------select导致core dump (句柄增多/句柄泄露引起)
- Linux的文件描述符个数限制导致创建文件(或socket)失败的问题
- MYSQL中group_concat有长度限制!默认1024
- SQL Server配置管理器的“别名”功能好处,实现内外网统一以及加了端口号导致的限制
- 查看、修改linux系统的最大链接数限制、文件描述符限制、端口范围限制、虚拟内存等
- 【机器管理问题记录】NIS环境没有重新启动导致普通用户访问限制
- 简单修改Linux系统文件描述符限制(Too many open files)
- 修改Linux系统下的最大文件描述符限制
- 容易理解的博文---ListView (一)ListView设置emptyView的限制
- 解决iOS7上UITextField 或者 UITextView限制字数输入导致崩溃问题的方法
- CentOS的1024连接数限制修改
- XP sp2的安全限制导致Adobe SVG Viewer无法使用浏览器脚本引擎?
- malloc导致core dump
- 变长参数的三点..., 打印log为什么容易core dump?
- iOS开发笔记12:iOS7上UITextField限制字数输入导致崩溃问题
- Linux最大文件句柄(文件描述符)限制和修改
- Linux进程关于文件描述符的数量限制
- 栈溢出导致的core dump的定位------千年等一回