{"title": "\u5173\u4e8efile-max\u548cfile-nr", "update_time": "2012-11-10 15:15:23", "tags": "sysctl file-nr file-max", "pid": "166", "icon": "linux.png"}
Linux的/proc/sys/fs/file-max决定了当前内核可以打开的最大的文件句柄数。 查看当前的值: ``` cat /proc/sys/fs/file-max ``` 这个值在kernel的文档里是这样描述的: ``` The value in file-max denotes the maximum number of file handles that the Linux kernel will allocate. When you get a lot of error messages about running out of file handles, you might want to raise this limit. The default value is 10% of RAM in kilobytes. To change it, just write the new number into the file: ``` 意思是file-max一般为内存大小(KB)的10%来计算,如果使用shell,可以这样计算: ``` grep -r MemTotal /proc/meminfo | awk '{printf("%d",$2/10)}' ``` 一般我们不需要主动设置这个值,除非这个值确实较小(可能有各种其他原因导致file-max没有设置为内存的10%) 如何查看当前kernel的句柄; ``` cat /proc/sys/fs/file-nr ``` file-nr在内核文档里得解释如下: ``` Historically, the three values in file-nr denoted the number of allocated file handles, the number of allocated but unused file handles, and the maximum number of file handles. Linux 2.6 always reports 0 as the number of free file handles -- this is not an error, it just means that the number of allocated file handles exactly matches the number of used file handles. ```