linux内核修改FD_SETSIZE,【转】linux下TCP连接数的限制FD_SETSIZE

一般linux下TCP连接的限制在TD_SETSIZE,系统默认为1024,由FD_SETSIZE决定。

1.修改方法:

修改/usr/etc/security/limits.conf文件,加入

*soft nofile

20000

*hard nofile

20000

然后reboot系统。

服务器就可以建立连接到20000个了,其连接方法是直接用connect,accept,

注意这里用select是不可以的。

2.上面的方法在不用select方法的情况下是不可以的,如果你用select,

那么仍然只能打开1024个,这是因为select的数目由FD_SETSIZE决定的。

那么我们可以改用poll来替代select,poll数组大小可以根据我们自己的需要来定义,

这样就解决了这个问题。

3.linux中的是通过文件方式来管理系统的,因此系统能承载多少TCP连接和系统文件打

开数目能力是相关的。

另外在/proc/sys/fs/file-max中定义了,系统最多能够打开的文件数目。

对于Linux

echo 65536 > /proc/sys/fs/file-max

然后 ulimit -S -n 8192

-------------------------------------------------------------------------------------

Linux Shell命令ulimit的用法

2007年07月30日 星期一 11:34

1,说明:

ulimit用于shell启动进程所占用的资源.

2,类别:

shell内建命令

3,语法格式:

ulimit [-acdfHlmnpsStvw] [size]

4,参数介绍:

-H 设置硬件资源限制.

-S 设置软件资源限制.

-a 显示当前所有的资源限制.

-c size:设置core文件的最大值.单位:blocks

-d size:设置数据段的最大值.单位:kbytes

-f size:设置创建文件的最大值.单位:blocks

-l size:设置在内存中锁定进程的最大值.单位:kbytes

-m size:设置可以使用的常驻内存的最大值.单位:kbytes

-n size:设置内核可以同时打开的文件描述符的最大值.单位:n

-p size:设置管道缓冲区的最大值.单位:kbytes

-s size:设置堆栈的最大值.单位:kbytes

-t size:设置CPU使用时间的最大上限.单位:seconds

-v size:设置虚拟内存的最大值.单位:kbytes

5.举例

在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误”(segmentation

fault)这样的问题,这主要就是由于Linux系统初始的堆栈大小(stack size)太小的缘故,一般为10M。我一般把stack

size设置成256M,这样就没有段错误了!命令为:

ulimit -s 262140

如果要系统自动记住这个配置,就编辑/etc/profile文件,在 “ulimit -S -c 0 >

/dev/null

2>&1”行下,添加“ulimit -s 262140”,保存重启系统就可

1,说明:

ulimit用于shell启动进程所占用的资源.

2,类别:

shell内建命令

3,语法格式:

ulimit [-acdfHlmnpsStvw] [size]

4,参数介绍:

-H 设置硬件资源限制.

-S 设置软件资源限制.

-a 显示当前所有的资源限制.

-c size:设置core文件的最大值.单位:blocks

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值