免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4584 | 回复: 7

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列 [复制链接]

论坛徽章:
0
发表于 2005-05-18 15:58 |显示全部楼层
用“ulimit -a”可以看到这些限制,如:
[root@HQtest root]# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
max memory size       (kbytes, -m) unlimited
open files                    (-n) 1024
pipe size          (512 bytes, -p) 8
stack size            (kbytes, -s) 8192
cpu time             (seconds, -t) unlimited
max user processes            (-u) 2047
virtual memory        (kbytes, -v) unlimited
用ulimit –n  10240  修改打开的文件数目变为 10240
虽然使用ulimit –a 可以看到变为10240,但是我在做压力测试的时候,当超过1024个用户时,服务就会down机。
最后只有重新编译了内核,编译内核后一切OK!
操作方法如下:
不同的Linux内核版本有不同的调整方法,
在Linux内核2.2.x中可以用如下命令修改:

  # echo '8192' >; /proc/sys/fs/file-max
  # echo '32768' >; /proc/sys/fs/inode-max
  
并将以上命令加到/etc/rc.c/rc.local文件中,以使系统每次重新启动时配置以上值。

在Linux内核2.4.x中需要修改源代码,然后重新编译内核才生效。编辑Linux内核源代码中的 include/linux/fs.h文件,
将 NR_FILE 由8192改为 65536,将NR_RESERVED_FILES 由10 改为 128。编辑fs/inode.c 文件将 MAX_INODE 由16384改为262144。

一般情况下,最大打开文件数比较合理的设置为每4M物理内存256,比如256M内存可以设为16384,
而最大的使用的i节点的数目应该是最大打开文件数目的3倍到4倍。

操作过程:
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侦听队列,设大。
 
   以上为修改过程,编译过程略...........

论坛徽章:
0
发表于 2005-05-18 19:02 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

在Linux内核2.2.x中可以用如下命令修改:

# echo '8192' >; /proc/sys/fs/file-max
# echo '32768' >; /proc/sys/fs/inode-max
  
并将以上命令加到/etc/rc.c/rc.local文件中,以使系统每次重新启动时配置以上值。

在Linux内核2.4.x中需要修改源代码,然后重新编译内核才生效。


在 2.4.x 的内核中我修改过 file-max, 可以解决 too many files open 的问题,请问为什么必须修改源代码呢?

论坛徽章:
0
发表于 2005-05-18 19:31 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

请教file-max在哪里?我的印象中程序通过
/usr/include/sys/param.h中的NOFILE来确定单个进程打开的最多文件数.
好象Linux是256.

请赐教,谢谢.

论坛徽章:
0
发表于 2005-05-19 09:56 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

我用的RedHat 9.0
也就是内核2.4.x的
修改这个文件file-max可以把值改大。但是好像并没有真正去掉这个系统的限制
每次我超过1024个用户的时候,程序就会down机
当时找了一些资料,说2.4以上的需要重新编译内核才行
我重新编译内核后,测试服务可以连超过1024个用户

不知道大家遇到这个情况没有,2.4的内核我直接改参数,没有起到作用,编译内核才ok

file-max这个文件在/proc/sys/fs这个目录下面

我原来也试着修改这个,好像也没有作用
可以在vi /etc/security/limits.conf,修改lichuanhua用户的限制
     lichuanhua soft nofile 65536   (nofile可打开的文件描述符的最大数)
     lichuanhua hard nofile 65536   
     lichuanhua soft nproc 16384    (nproc(单个用户可用的最大进程数量)
     lichuanhua hard nproc 16384

关于操作系统的限制可以使用 ulimit -a看到相关的限制

论坛徽章:
0
发表于 2005-05-19 10:16 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

linux 的每个进程所能打开的文件数目限制为1024

论坛徽章:
0
发表于 2005-05-19 10:49 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

原帖由 "lichuanhua"]est root 发表:
# ulimit -a
core file size        (blocks, -c) 0
data seg size         (kbytes, -d) unlimited
file size             (blocks, -f) unlimited
max locked memory     (kbytes, -l) unlimited
ma..........


首先要说的是修改系统参数是可以解决OPEN MANY FILES问题的。

第2个要说的发生OPEN MANY FILES问题,修改FILE MAX是解决不了的

第3个要说的是OPEN MANY  FILES问题,是可以通过LIMIS.CONF这个文件解决的

第4个,如果你不修改SSH的某个参数,那么,你远程登陆上去,并且重新启动某个服务,你的这个1024的限制,实际上是依然存在的

论坛徽章:
0
发表于 2005-05-21 18:16 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

这是Openssh的bug
Red Hat最新发布的RHEL 3 update 5包含了openssh升级

新版openssh-3.6.1p2-33.30.4已修复这个bug:
On systems where the privilege separation feature was turned on, the user
resource limits were not correctly set if the configuration specified to
raise them above the defaults.  It was also not possible to change an
expired password.

论坛徽章:
0
发表于 2005-05-23 00:09 |显示全部楼层

重新编译内核来修改进程打开的最大文件数和修改listen侦听队列

我的服务是公司自己写的一个证券的linux服务端
是在这个程序上要做的压力测试...
每个进程所能打开的文件数是操作系统的限制
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




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

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP