昨天看了一下shell的资源限定参数fs.file-nr和ulimit,今天总结了一下。小分享一下  ^_^  

内核参数fs.file-nr包括三个参数值,第一个参数表示系统中曾经同时打开过的文件数峰值,
第二个参数表示空闲(分配后已释放)的文件数,
第三个参数表示可以打开的最大文件数,其值等于fs.file-max。
当前打开的文件数 = 第一个参数值 - 第二个参数值
例如:
[root@xmpan sys]# sysctl fs.file-nr
fs.file-nr = 2801       1      49498

当前打开的文件数 =2801-1 = 2800


shell的资源限定

ulimit:显示(或设置)用户可以使用的资源限制

  -a 显示用户可以使用的资源限制

  -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files)
例如:ulimit -n 1024
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误

  -u <可以运行的最大并发进程数> 设置用户可以同时运行的最大进程数(max user processes)
例如:ulimit -u 1024

ulimit  unlimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)
和可同时运行的最大进程数(max user processes)无效

其他的参数看了一下

 -c <core文件上限>  设定core文件的最大值,单位为区块。 (core file size)

 -d <数据节区大小>  程序数据节区的最大值,单位为KB。( data seg size)

 -e <size>   指定调度优先级的最大值 (max nice)

  -f <size>  shell所能建立的最大文件,单位为区块。 (file size)
 
  -i <size>     支持的最大的待定信号的(pending signals )

  -l <size> 设置在内存中锁定进程的最大值.单位:KB  (max locked memory) 
 
  -m <size>  指定可使用内存的上限,单位为KB。 (max memory size)

  -p <size>  指定管道缓冲区的大小,单位512字节。( pipe size  )

  -q   <size>     指定POSIX信息队列的上限 单位B(POSIX message queues) 

  -r <size>     指定最大的运行优先级(max rt priority)

  -s <size>  指定堆叠的上限,单位为KB。 (stack size )

  -t  <size>  指定CPU使用时间的上限,单位为秒。 (cpu time )
 
  -v <size>  指定可使用的虚拟内存上限,单位为KB。(virtual memory )

  -x  <size>    指定最大的file locks

还有一个限定的文件/etc/security/limits.conf

<domain>               <type>    <item>         <value>
*                       hard     nproc           16384

*                       soft     nofile          1024
*                       hard     nofile          65536

limits和ulimit的区别:

ulimit 命令设置的是全局 limits.conf是针对用户   对root无效

                                                          2007/09/14