您当前的位置: 首页 >  服务器

phymat.nico

暂无认证

  • 1浏览

    0关注

    1967博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

phymat.nico 发布时间:2018-01-15 20:31:05 ,浏览量:1

文件描述符的有效范围是 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   这样任何用户连接都是变为修改的值。
关注
打赏
1659628745
查看更多评论
立即登录/注册

微信扫码登录

0.1394s