首页
登录 | 注册

增大Linux的socket最大连接数

最近接的项目是模拟多个socket 客户端与服务器进行通信。由于Linux 系统的限制,在linux/include/linux/posix_types.h文件中有如下的宏定义:

#undef __FD_SETSIZE

#define __FD_SETSIZE 1024

这个宏是对最大文件描述符的定义为1024。当需要1024个以上的fd时,例如select()函数就会侦听出错。因此需要将1024改成需要的数目,但最多不能超过65535。但仅仅修改这个是不够的。

第二步就需要修改一个进程最大打开的文件数。其具体步骤是:

1、cd /usr/src/linux-2.4/include/linux

2、vi limits.h 编辑文件:

#define NR_OPEN 90240 原值为1024

#define OPEN_MAX 10240 原值为1024

3、vi fs.h

#define INR_OPEN 10240 原值为1024

#define NR_FILE 65536 原值为8192,这个值为内存64/1M的比率计算,1G内存计算为:64*1024

#define NR_RESERVED_FILES 128 原值为10.

4、cd /usr/src/linux-2.4/include/net

5、vi tcp.h

#define TCP_LHTABLE_SIZE 128 原值为32.便于listen侦听队列,设大。

设置最大打开文件数与内存相关,太大系统会变慢。

第三步就是编译内核,其具体步骤是:

1. make clean

2. make

3. make dep

4. make bzImage

将bzImage 导入/boot 重启系统即可!

用1024个以上客户端与服务器进行连接,在服务器的终端用netstat |wc 命令可以统计出当前建立的socket的连接数。


相关文章

  • 内核中的UDP socket流程(1)作者:gfree.wind@gmail.com原文:http://blog.chinaunix.net/u3/116859/showart.php?id=2443229相对于TCP,UDP协议要简单的多 ...
  • 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. 作者:gfree.wind@gmail.com 博客:linux ...
  • 关于页面缓存的信息,可以用 cat /proc/meminfo  看到.其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache).随着写入缓存页,Dirty 的值会增加. 一旦开始把缓存页写入硬盘,W ...
  • 原创文章,转载请注明: 转载自pagefault 本文链接地址: linux kernel 2.6.35中RFS特性详解 前面我介绍过google对内核协议栈的patch,RPS,它主要是为了软中断的负载均衡,这次继续来介绍google 的 ...
  • 【原创】利用inotify+rsync实现linux文件批量更新
    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://blog.chinaunix.net/space.php?uid=9419692&do=blog&id=3 ...
  • netstat此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora.  .语法 address_family_optionsnetstat  {--route|-r} []  [-- ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号