找DLL电脑论坛

 找回密码
 立即注册
查看: 269|回复: 2

增大Linux的socket最大连线数(针对select,要编译核心)

[复制链接]

425

主题

444

帖子

1878

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1878
发表于 2020-4-12 08:15:45 | 显示全部楼层 |阅读模式
由于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  (LINUX-2.6内核以后,编译内核不再需要先执行这个命令了)

4. make bzImage

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

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

回复

使用道具 举报

425

主题

444

帖子

1878

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1878
 楼主| 发表于 2020-4-12 10:44:24 | 显示全部楼层
CentOS安装相应版本的内核源码
查看一下系统版本:
cat /etc/redhat-release
CentOS release 5.11 (Final)

uname -r
2.6.18-398.el5



wget http://vault.centos.org/5.11/os/ ... .18-398.el5.src.rpm


添加mockbuild 用户
sudo useradd -s /sbin/nologin mockbuild


安装:
rpm -ivh kernel-2.6.18-398.el5.src.rpm


解压缩:
tar -xjvf linux-2.6.18.4.tar.bz2



make config: 这个要求你手动选择所有配置项,配置完成后生成.config文件.

make menuconfig: 显示以curses的图形配置菜单,当已有.config文件存在时,它会根据.config文件设定默认项.若不存在.config文件,则根据各级Kconfig文件来设定菜单项.完成配置后,生成.config文件.




回复 支持 反对

使用道具 举报

425

主题

444

帖子

1878

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1878
 楼主| 发表于 2020-4-12 13:59:44 | 显示全部楼层
Linux的fd数量限制查询


1)Linux系统下,所有进程允许打开的最大fd数量。查询语句:

cat /proc/sys/fs/file-max
2)Linux系统下,所有进程已经打开的fd数量及允许的最大数量。查询语句:

cat /proc/sys/fs/file-nr
3)单个进程允许打开的最大fd数量.查询语句:

ulimit -n
4)单个进程(例如进程id为5454)已经打开的fd.查询语句:

ls -l /proc/5454/fd/


回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|找DLL下载站

GMT+8, 2020-9-27 08:59 , Processed in 1.171890 second(s), 22 queries .

快速回复 返回顶部 返回列表