Linux修改open files数及ulimit和file-max的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux修改open files数及ulimit和file-max的区别相关的知识,希望对你有一定的参考价值。

linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid), 更要注意这个问题。

说明:
1. file-max的含义。man proc,可得到file-max的描述:
/proc/sys/fs/file-max
This file defines a system-wide limit on the number of open files for all processes. (See
also setrlimit(2), which can be used by a process to set the per-process limit,
RLIMIT_NOFILE, on the number of files it may open.) If you get lots of error messages
about running out of file handles, try increasing this value:
即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。
也就是说,这项参数是系统级别的。
2. ulimit
Provides control over the resources available to the shell and to processes started by it, on systems that allow such control.
即设置当前shell以及由它启动的进程的资源限制。
显然,对服务器来说,file-max, ulimit都需要设置,否则就可能出现文件描述符用尽的问题
参考技术A ulimit里的最大文件打开数量的默认值
如果在limits.conf里没有设置,则默认值是1024,如果limits.con有设置,则默认值以limits.conf为准。例如我换了一台机器,登录进去,ulimit -n显示如下:
[root@zk203 ~]# ulimit -n
2000
这是因为我的limits.conf里的文件打开数是2000,如下:
[root@zk203 ~]# cat /etc/security/limits.conf
root soft nofile 2000

root hard nofile 2001
如果limits.conf里不做任何限制,则重新登录进来后,ulimit -n显示为1024。
[root@zk203 ~]# ulimit -n
1024

ulimit修改后生效周期
修改后立即生效,重新登录进来后失效,因为被重置为limits.conf里的设定值本回答被提问者采纳

linux之Too many open files问题-修改linux最大文件句柄数

linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。


在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:

[[email protected] ~]# ulimit -a

open files                      (-n) 1024


默认情况下,linux最大文件句柄数为1024个。当你的服务器在大并发达到极限时,就会报出“too many open files”。

那么如何修改linux最大文件句柄数呢?其实很简单:


1、临时生效方法

这命令就可以修改linux最大文件句柄数,修改以后使用ulimit -a 查看修改的状态,如:

[[email protected] ~]# ulimit -n 65536

[[email protected] ~]# ulimit -a

open files                      (-n) 65536

[[email protected] ~]# ulimit -n

65536

但是,这种方法只针对当前进程有效。重新打开一个shell或者开启一个进程,你就会发现参数还是ulimit -n xx修改之前的数字。


2、修改linux系统参数。vi /etc/security/limits.conf 添加

*  soft  nofile  65536

*  hard  nofile  65536

注:"*"表示对所有用户生效,如果只需要对某个用户生效,只需要将"*"改为某个用户名。

修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:

[[email protected] ~]# ulimit -a

open files                      (-n) 65536

注:

硬限制表明soft限制中所能设定的最大值。 soft限制指的是当前系统生效的设置值。 hard限制值可以被普通用户降低。但是不能增加。 soft限制不能设置的比hard限制更高。 只有root用户才能够增加hard限制值。

可以最大设到:

655350


本文出自 “旅游人生” 博客,谢绝转载!

以上是关于Linux修改open files数及ulimit和file-max的区别的主要内容,如果未能解决你的问题,请参考以下文章

linux修改open files数

linux修改open files数

怎样改变Linux 系统 open files 选项

修改Linux的open files参数是,立即生效,无需重启

linux之Too many open files问题-修改linux最大文件句柄数

linux修改open file参数