Linux服务器文件描述符最大值修改

本文详细介绍了Linux中文件描述符的有效范围、创建方法、缺点以及如何在不同平台上定义其数量。重点讨论了如何通过修改limits.conf文件永久更改系统文件描述符最大值,并提供了在各种操作系统环境下设置文件描述符的指导。
摘要由CSDN通过智能技术生成

         文件描述符的有效范围是 0 到 OPEN_MAX。Linux 2.4.22 强制规定最多不能超过 1,048,576 。
  文件描述符是由无符号整数表示的句柄,进程使用它来标识打开的文件。文件描述符与包括相关信息(如文件的打开模式、文件的位置类型、文件的初始类型等)的文件对象相关联,这些信息被称作文件的上下文。


如何创建文件描述符
  进程获取文件描述符最常见的方法是通过本机子例程open或create获取或者通过从父进程继承。后一种方法允许子进程同样能够访问由父进程使用的文件。文件描述符对于每个进程一般是唯一的。当用fork子例程创建某个子进程时,该子进程会获得其父进程所有文件描述符的副本,这些文件描述符在执行fork时打开。在由fcntl、dup和dup2子例程复制或拷贝某个进程时,会发生同样的复制过程。
  第二个异常在JVM进程缺乏文件描述符时出现(尽管在执行forkAndExec()子例程时不需要新的文件描述符来复制父进程的文件描述符)。对于每个进程,操作系统内核在u_block结构中维护文件描述符表,所有的文件描述符都在该表中建立索引。


缺点
  文件描述符的概念存在两大缺点:
  在非UNIX/Linux操作系统上(如Windows NT),无法基于这一概念进行编程。
  由于文件描述符在形式上不过是个整数,当代码量增大时,会使编程者难以分清哪些整数意味着数据,那些意味着文件描述符。因此,完成的代码可读性也就会变得很差。
如何在不同平台上定义文件描述符的数量
  文件描述符极限以及可分配给进程的最大大小由资源限制来定义。这些值应当按照在WebLogicServer文档中建议的、特定于操作系统的文件描述符值来设置:
  对于WLS8.1:调整硬件、操作系统和网络性能
  对于WLS7.0:调整硬件、操作系统和网络性能
  对于WLS6.1:调整硬件、操作系统和网络性能
  Unix和Linux都有文件描述符。不过,二者的主要区别在于如何设置文件描述符的硬极限值、缺省值和配置过程。
  Solaris
  /usr/bin/ulimit实用程序定义允许单个进程使用的文件描述符的数量。它的最大值在rlim_fd_max中定义,在缺省情况下,它设置为65,536。只有root用户才能修改这些内核值。
Linux
  管理用户可以在etc/security/limits.conf配置文件中设置他们的文件描述符极限,如下例所示。
  softnofile1024
  hardnofile4096
  系统级文件描述符极限还可以通过将以下三行添加到/etc/rc.d/rc.local启动脚本中来设置:
  #Increasesystem-widefiledescriptorlimit.
  echo4096>/proc/sys/fs/file-max
  echo16384>/proc/sys/fs/inode-max
Window
  在Windows操作系统上,文件描述符被称作文件句柄。在Windows2000服务器上,打开文件的句柄极限设置为16,384。此数量可以在任务管理器的性能摘要中监视。
HP-UX
  nfile定义打开文件的最大数量。此值通常由以下公式来确定:((NPROC*2)+1000),其中NPROC通常为:((MAXUSERS*5)+64)。如果MAXUSERS等于400,则经过计算得到此值为5128。通常可以将此值设高一些。maxfiles是每个进程的软文件极限,maxfiles_lim是每个进程的硬文件极限。
AIX
  文件描述符极限在/etc/security/limits文件中设置,它的缺省值是2000。此极限可以通过ulimit命令或setrlimit子例程来更改。最大大小由OPEN_MAX常数来定义。
另外解决方法
  对于ANSI C规范中定义的标准库的文件I/O操作。ANSI C规范给出了一个解决方法,就是使用FILE结构体的指针。事实上,UNIX/Linux平台上的FILE结构体的实现中往往都是封装了文件描述符变量在其中。
  


在部署该类服务器时修改文件描述符是必要进行的操作,linux中有修改最大文件描述符的方式:
 
修改limits.conf文件,永久更改系统文件描述符最大值
vi /etc/security/limits.conf文件,在最后加入如下两行
*                               soft    nofile  65536
*                               hard    nofile  65536
或者使用下列命令直接插入:
echo "*               soft    nofile  65536" >>/etc/security/limits.conf
echo "*               hard    nofile  65536" >>/etc/security/limits.conf
 
这样任何用户连接都是变为修改的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值