olga 发表于 2019-1-27 08:17:20

linux之Too many open files问题

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

  在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:
  # ulimit -a
  open files                      (-n) 1024

  

  默认情况下,linux最大文件句柄数为1024个。当你的服务器在大并发达到极限时,就会报出“too many open files”。
  那么如何修改linux最大文件句柄数呢?其实很简单:
  

  1、临时生效方法

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

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

  2、修改linux系统参数。vi /etc/security/limits.conf 添加
  *  soft  nofile  65536
  *  hard  nofile  65536
  注:"*"表示对所有用户生效,如果只需要对某个用户生效,只需要将"*"改为某个用户名。
  修改以后保存,注销当前用户,重新登录,执行ulimit -a ,ok ,参数生效了:
  # ulimit -a
  open files                      (-n) 65536

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




页: [1]
查看完整版本: linux之Too many open files问题