精华内容
下载资源
问答
  • Linux 修改最大文件句柄数

    千次阅读 2018-04-19 08:45:29
    为了提升服务器并发访问能力,有时我们需要修改最大支持打开文件的数量, 使用 ulimit 工具将很容易实现这点1. 首先,查看当前能够打开文件的数量# ulimit -a 可以看到,open files 为1024, 而且提示了参数为 -n...

         为了提升服务器并发访问能力,有时我们需要修改最大支持打开文件的数量,

         使用 ulimit 工具将很容易实现这点

         首先,查看当前能够打开文件的数量

    # ulimit -a
              

          可以看到,open files 为1024, 而且提示了参数为 -n,下面我们修改该值

    # ulimit -n 65536
    # ulimit -a
               

          可以看到,open files 已经变成我们需要的 65536 啦! 是不是很简单呢! 


          不过上述修改方法只是当前生效,如果要永久生效,还是要修改配置文件

          1. /etc/pam.d/login 添加pam_limits.so (有时候系统默认添加)

              首先要通过find / -name pam_limits.so 查找文件的具体的位置

              session required /lib/security/pam_limits.so

           2. /etc/security/limits.conf 添加 (* 代表所有用户有效,你也可以配置具体的用户名)

               * soft nofile 65536

               * hard nofile 65536


    展开全文
  • 修改linux最大文件句柄数

    千次阅读 2018-05-15 12:47:10
    修改linux最大文件句柄数2016年04月18日 16:18:41阅读:683转自 http://www.cnblogs.com/likehua/p/3831331.html大家知道在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是...
    修改linux最大文件句柄数

    转自 http://www.cnblogs.com/likehua/p/3831331.html

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

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

    [root@mongodb11 ~]# ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 256324
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 256324
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited

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

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

    1、ulimit -n 2048

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

    [root@mongodb11 ~]# ulimit -n 2048
    [root@mongodb11 ~]# ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 256324
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 2048
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 256324
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited

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

    当然有!那就是修改系统参数。

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

    *  soft  nofile  65536

    *  hard  nofile  65536

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

    [root@localhost ~]# ulimit -a
    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    scheduling priority             (-e) 0
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 256600
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65536
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 256600
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited


    Linux 句柄限制分为1系统级限制和2用户级限制:

    1 系统级限制

    1.1 /proc/sys/fs/nr_open

    系统文件系统支持文件句柄总数上限, 默认值1048576 (1M). 该值上限受限于系统内存. 这个是所有限制的最大值.

    1.2 /proc/sys/fs/file-max

    系统文件系统支持文件句柄总数最大值, 必须小于 nr_open. 查看命令(下面3个命令等效):

    1
    2
    3
    4
    5
    6
    [root@vm-cdh4 ~]# sysctl -a | grep -i file-max --color
    fs.file-max = 188436
    [root@vm-cdh4 ~]# cat /proc/sys/fs/file-max
    188436
    [root@vm-cdh4 ~]# sysctl -e fs.file-max
    fs.file-max = 188436

    用户级限制

    限制进程句柄数可能导致服务器OOM.如异步Q消息中OOM。

    2.1 硬上限 ulimit -Hn

    单个进程句柄数硬上限. <= file-max. 查看命令:

     

    1
    2
    [root@vm-cdh4 ~]# ulimit -Hn
    4096
    临时更改, 重启后消失:

     

     

    1
    2
    3
    [root@vm-cdh4 ~]# ulimit -Hn 8192
    [root@vm-cdh4 ~]# ulimit -Hn
    8192

     

    2.2 软上限 ulimit -Sn

    单个进程句柄数软上限, <= ulimit -Hn. 查看命令:

     

    1
    2
    3
    4
    [root@vm-cdh4 ~]# ulimit -Sn
    1024
    [root@vm-cdh4 ~]# ulimit -n
    1024

    临时更改, 重启后消失:

     

     

    1
    2
    3
    [root@vm-cdh4 ~]# ulimit -Sn 8000
    [root@vm-cdh4 ~]# ulimit -n
    8000

     

    2.3 修改单个进程句柄数上限

    同时临时修改软硬上限(<=file-max)重启后消失:

     

    1
    [root@vm-cdh4 ~]# ulimit-SHn 10240

     

    永久修改软硬上限(RHEL6.4), 在 /etc/security/limits.conf 里设置(* 表示对所有用户):

     

    1
    2
    3
    4
    5
    6
    7
    #......
    #@student       -       maxlogins       4
     
    *    hard    nofile    10240
    *    soft    nofile    10240
     
    # End of file
    展开全文
  • 对于“linux修改单个进程可打开的最大文件句柄数”,在网上搜索了很多教程,基本都说得不全或者已经过时了,经过亲自试验,修改成功,现总结如下: 1./etc/security/limits.conf中指定的nofile的,nofile有上限,...

    对于“linux修改单个进程可打开的最大文件句柄数”,在网上搜索了很多教程,基本都说得不全或者已经过时了,经过亲自试验,修改成功,现总结如下

    1./etc/security/limits.conf中指定的nofile的值,nofile有上限,不是无穷大。nofile由内核参数nr_open定义的.
    “在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可以通过/proc/sys/fs/nr_open来设置。”


    2.使用cat /proc/sys/fs/nr_open 查看nr_open值,可通过修改/etc/sysctl.conf 修改fs.nr_open值,sysctl -p生效


    3.fix_max linux内核定义的最大file handles(文件句柄数).nr_open定义是单进程最大file-handles,file-handles(即文件句柄)
    file-max:
    The value in file-max denotes the maximum number of file-
    handles that the Linux kernel will allocate. When you get lots
    of error messages about running out of file handles, you might
    want to increase this limit

    nr_open:
    This denotes the maximum number of file-handles a process can
    allocate. Default value is 1024*1024 (1048576) which should be
    enough for most machines. Actual limit depends on RLIMIT_NOFILE
    resource limit.

    注:
    在centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者*代表所有用户来设置。 当然,/etc/security/limits.d/ 中可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。

    不过,在CentOS 7 / RHEL 7的系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。
    对于systemd service的资源限制,如何配置呢?

    全局的配置,放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。 同时,也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/*.conf 和 /etc/systemd/user.conf.d/*.conf
    其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.conf。

    注意:修改了system.conf后,需要重启系统才会生效。

    一、如果需要修改 单个进程打开的文件句柄数 即nofile大于1024*1024,需要修改nr_open,方法如下:
    1、使用cat /proc/sys/fs/nr_open查看nr_open值;
    [root@localhost ~]# cat /proc/sys/fs/nr_open 
    1048576
    2、修改nr_open的值为10240000
    打开/etc/sysctl.conf,在文件末尾添加fs.nr_open=10240000

    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).

    fs.nr_open=10240000

    保存
    (注:nr_open的值要小于file—max)

    3、执行如下命令,使修改生效
    sysctl -p

    4、验证修改是否生效
    cat /proc/sys/fs/nr_open
    如果结果为10240000,说明修改生效

    二、修改/etc/systemd/system.conf,主要用于systemd service的资源限制
    [root@localhost ~]# vi /etc/systemd/system.conf
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    #
    # Entries in this file show the compile time defaults.
    # You can change settings by editing this file.
    # Defaults can be restored by simply deleting this file.
    #
    # See systemd-system.conf(5) for details.



    [Manager]
    #LogLevel=info
    #LogTarget=journal-or-kmsg
    #LogColor=yes
    #LogLocation=no
    #DumpCore=yes
    #CrashShell=no
    #ShowStatus=yes
    #CrashChVT=1
    #CtrlAltDelBurstAction=reboot-force
    #CPUAffinity=1 2
    #JoinControllers=cpu,cpuacct net_cls,net_prio
    #RuntimeWatchdogSec=0
    #ShutdownWatchdogSec=10min
    #CapabilityBoundingSet=
    #SystemCallArchitectures=
    #TimerSlackNSec=
    #DefaultTimerAccuracySec=1min
    #DefaultStandardOutput=journal
    #DefaultStandardError=inherit
    #DefaultTimeoutStartSec=90s
    #DefaultTimeoutStopSec=90s
    #DefaultRestartSec=100ms
    #DefaultStartLimitInterval=10s
    #DefaultStartLimitBurst=5
    #DefaultEnvironment=
    #DefaultCPUAccounting=no
    #DefaultBlockIOAccounting=no
    #DefaultMemoryAccounting=no
    #DefaultTasksAccounting=no
    #DefaultTasksMax=
    #DefaultLimitCPU=
    #DefaultLimitFSIZE=
    #DefaultLimitDATA=
    #DefaultLimitSTACK=
    #DefaultLimitCORE=
    DefaultLimitCORE=infinity
    #DefaultLimitRSS=
    #DefaultLimitNOFILE=
    DefaultLimitNOFILE=10240000
    #DefaultLimitAS=
    #DefaultLimitNPROC=
    DefaultLimitNPROC=10240000
    #DefaultLimitMEMLOCK=
    #DefaultLimitLOCKS=
    #DefaultLimitSIGPENDING=
    #DefaultLimitMSGQUEUE=
    #DefaultLimitNICE=
    #DefaultLimitRTPRIO=
    #DefaultLimitRTTIME=

    保存

    三、修改/etc/security/limits.conf文件
    [root@localhost ~]# vi /etc/security/limits.conf
    在文件末尾添加
    root            soft    fsize           unlimited
    root            hard    fsize           unlimited
    root            soft    cpu             unlimited
    root            hard    cpu             unlimited
    root            soft    as              unlimited
    root            hard    as              unlimited
    root            soft    nofile          10240000
    root            hard    nofile          10240000
    root            soft    nproc           10240000
    root            hard    nproc           10240000

    保存退出

    四、修改/etc/security/limits.d/20-nproc.conf文件
    [root@localhost ~]# vi /etc/security/limits.d/20-nproc.conf 
    修改
    *          soft    nproc     4096

    *          soft    nproc     10240000

    保存。
    CentOS7修改单个进程可打开的最大文件句柄数为10240000完成。

    展开全文
  • 修改Linux最大文件句柄数踩过坑

    千次阅读 2019-06-26 11:19:51
    项目需要,修改了linux的最大打开文件描述符,大概超过了200多万,然而注销后就无法登录了。。。 /etc/security/lmits.conf,配置内容如下: * soft nofile 2048000 // 软限制 * hard nofile 2048000 //硬限制 ...

    项目需要,修改了linux的最大打开文件描述符,大概超过了200多万,然而注销后就无法登录了。。。
    /etc/security/limits.conf,配置内容如下:

    * soft nofile 2048000 // 软限制
    * hard nofile 2048000 //硬限制
    admin hard memlock unlimited
    admin soft memlock unlimited
    admin hard nproc 1024000
    admin hard nofile 1024000
    admin hard as unlimited

    改完上述配置。注销后,root无法登录,用admin账号su root报出如下错误:
    su: cannot open session: Permission denied

    貌似要修复比较麻烦(这个稍后操作):
    https://blog.csdn.net/qq_40809549/article/details/82658720
    上面这个文章是centos6的,下面是centos7的供参考:
    https://blog.csdn.net/chenmingwei000/article/details/79946551
    完成修改以后,输入两次exit,输入reboot重启机器。

    在处理之前,先搞清楚一些配置项的意思:

    • 用户参数:文章开头处提到的 /etc/security/limits.conf 中可以设置系统资源。很多网上文章只提到了修改这个文件。然而仅修改这个文件会导致容易踩坑。
      ulimit设置的参数(/etc/security/limits.conf),其实是对单一程序的限制,进程级别。软限制(soft nofile),程序可动态调整至硬限制,只会做出warnning。硬限制(hard limit)无法突破。hard limit值设置受限于nr_open。

      /etc/security/limits.d/ 中也可以配置,系统是先加载limits.conf。然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。
      http://kefhifi.com/?p=1521

    • 内核参数:单个进程可分配的最大文件数: /proc/sys/fs/nr_open。单个进程可分配的最大文件句柄数。

        [admin@node8 ~]$ cat /proc/sys/fs/nr_open
        1048576	
      

      临时修改:

      echo xxxxx > /proc/sys/fs/nr_open

      永久修改,需要通过sysctl -p生效:

      /etc/sysctl.conf 中设置 fs.nr_open = xxxxxx

    • 内核参数:系统最大打开文件描述符数: /proc/sys/fs/file-max。内核可分配的最大文件句柄数。

        [admin@node8 ~]$ cat  /proc/sys/fs/file-max
        13071445
      

      临时修改:

      echo xxxxx > /proc/sys/fs/file-max

      永久修改,需要通过sysctl -p生效:

      /etc/sysctl.conf 中设置 fs.file-max = xxxxxx

    由于 hard limit不能大于/proc/sys/fs/nr_open,假如hard limit大于nr_open,注销后无法正常登录。由此导致悲剧。。。

    上述参数的大小关系是:soft limit < hard limit < nr_open < file-max

    展开全文
  • 修改linux的最大文件句柄数限制

    千次阅读 2018-10-12 13:58:25
    修改linux的最大文件句柄数限制 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了...
  • 1.查看文件句柄数 ulimit -a 列出结果的 open files 就是当前支持的最大句柄 2.修改默认设置 执行命令 vim /etc/security/limits.conf 在文件末尾加上 * soft nofile 30000 #超过会报警 * hard nofile 65536 #...
  • 文件句柄数递增问题排查

    千次阅读 2017-12-18 09:40:24
    最近在redis的项目中,存在打开的文件句柄数递增的现象,当超过设置的单进程最大文件句柄数时出现进程挂死,解决问题迫在眉睫;本身这个项目的文件句柄数不会超过100,更加坚定有问题,首先查看当前服务器打开的文件...
  • Linux最大文件句柄数查看及修改

    千次阅读 2018-08-06 08:36:25
    在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [root@mongodb11 ~]# ulimit -a core ...
  • Linux文件句柄数调整

    2018-12-24 23:20:00
    1. Linux系统文件句柄数概念 文件句柄(Windows) 文件描述符(Unix/Linux):file discriptor,fd。对于内核而言,所有打开的文件都是通过文件描述符引用,文件描述符是一个非负整数,变化范围是0~(OPEN_MAX-1)。...
  • 修改文件句柄数

    2011-12-05 15:07:14
    修改文件句柄数 2010年07月29日 星期四 上午 10:46 ... ...修改文件句柄数 ...在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值10
  • 调整ubuntu 文件句柄数

    千次阅读 2011-11-23 09:24:36
    使用如下命令查看当前最大文件句柄数:  ulimit -n  ulimit -n  输出:1024 解决方案: 1.调整Ubuntu下的文件句柄数。 查看这篇文章: http://blog.csdn.net/zhaiqi618/article/details/5616998 中的 ...
  • 下面是 ulimit命令的一些选项: 查看进程打开文件最大限制 cat /proc/sys/fs/file-max 查看系统级的最大限制 ulimit -n 查看用户级的限制(一般是1024 华为阿里这样的是65535) 查看某个进程已经打开的文件数 修改...
  • ulimit用于shell启动进程所占用的资源 1、类别: shell内建命令 2、语法格式: ulimit [-acdfHlmnpsStvw] [size] ...-c size:设置core文件最大值.单位:blocks -d size:设置数据段的最大值.单位:kbytes -
  • 如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。 缺省设置:4096 ...
  • ulimit -u 10000 #设置每个用户最大进程位100000 ulimit -n 65535 #设置每个进程的最大文件句柄数
  • Linux单进程打开文件句柄数上限

    万次阅读 2016-04-26 10:53:31
    ulimit 查看系统的文件相关限制单个进程最多允许打开的文件句柄数(包括socket连接)是有限制的,当大于这个系统限制时,程序会抛出大量的无法打开文件的报错。
  • 修改linux文件句柄数

    2014-01-09 09:31:28
    在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。  对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象java等单进程...
  • 在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是,Linux的系统默认值为1024,也就是说,一个进程最多可以接受1024个socket连接。这是远远不够的。 文件句柄,也叫文件描述符。在Linux系统中,...
  • 都知道Linux系统的特性,一切皆文件,所以在运行zabbix这样的服务时,其中重要的一个调优就是调整linux系统的最大文件句柄数,解决“too many open files”的问题,增大程序运行允许打开的文件,提高性能。...
  • linux系统下的用户文件句柄数限制 文章来源:企鹅号 为什么要修改用户打开的文件 系统默认单个进程可以打开1024个文件,对于一些应用如tomcat、oracle等,运行时经常open成千上万个文件,系统管理员需根据...
  • 一个进程能够打开最大文件句柄数的设置 _操作系统_软件频道_至顶网在Linux下,我们使用ulimit -n命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。在Linux下,我们使用...
  • 在打开这些资源的时候都会返回一个文件描述符即文件句柄,用来标识该资源。  Too many open files 的异常,可能是由于应用程序对资源的使用不当造成的,比如没有及时关闭Socket或数据库连接等;但也可能应用确实...
  • linux 打开文件句柄时可能出现“Too many open files”的提示,可以修改linux的最大文件句柄数限制: 1)ulimit -n 65535   在当前session有效,用户退出或者系统重新后恢复默认值 2)修改profile文件:在...
  • Linux下查看进程打开的文件句柄数

    千次阅读 2018-03-10 17:16:54
    ---查看系统默认的最大文件句柄数,系统默认是1024# ulimit -n1024 ----查看当前进程打开了多少句柄# lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more131 24204 57 24244 57 24231 ........其中第一列是...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 75,245
精华内容 30,098
关键字:

文件句柄数最大值