精华内容
下载资源
问答
  • 2020-10-30 10:29:25

    说明:主流操作系统的设计是将TCP/UDP连接采用与文件一样的方式去管理,即一个连接对应一个fd。主流的linux服务器默认支持的最大fd数量为1024,可以通过ulimit -a命令查看 open files字段。当连接数大很容易应为fd不足而出现“open too many files”的错误,导致无法建立新的连接。调整方法为永久修改方法

    • 修改文件:/etc/security/limits.conf,在文件中添加
    #限制单个进程最大文件句柄数(到达此限制时系统报警)
    * soft nofile 65536
    #限制单个进程最大文件句柄数(到达此限制时系统报错)
    * hard nofile 65536
    • 修改文件:/etc/sysctl.conf, 在文件中添加:
    #限制整个系统最大文件句柄数
    fs.file-max=655350
    • sysctl -p 使配置生效
    • 退出当前用户,重新登录
    更多相关内容
  • 不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。2、产生的原因:经常在使用linux的时候...

    1、问题阐述:

    too many open files:顾名思义即打开过多文件数。

    不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。

    2、产生的原因:

    经常在使用linux的时候出现,大多数情况是由于程序没有正常关闭一些资源引起的,所以出现这种情况,请检查io读写,socket通讯等是否正常关闭。

    3、经典案例:

    很多项目上线不久运行了一段时间后,服务突然宕了,经检查日志,出现了too many open files 错误。

    4、解决方案:

    其实Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到 这个数量,因此我们需要把这个值改大一些。我们可以用ulimit -n 来查看当前用户句柄数限制。那么这个1024是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。

    这个限制是针对单个程序的限制

    这个限制不会改变之前已经运行了的程序的限制

    对这个值的修改,退出了当前的shell就会消失

    因此出现这种问题有两种解决方式:

    第一:增大文件句柄数。这种方式能及时解决问题,但是不能够彻底的解决问题,可以为彻底解决问题提供一定的时间保证。那么如何增大文件句柄数数呢?

    如修改文件句柄数为65535,ulimit -n 65535.此时系统的文件句柄数为65535.

    2)将ulimit 值添加到/etc/profile文件中(适用于有root权限登录的系统)

    为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit 加入到/etc/profile 文件底部。

    echo ulimit -n 65535 >>/etc/profile

    source /etc/profile #加载修改后的profile

    ulimit -n #显示65535,修改完毕!

    到此为止,你以为大功告成了么,其实不然,突然发现自己再次登录进来的时候,ulimit的值还是1024,这是为什么呢? 用户登录的时候执行sh脚本的顺序:

    /etc/profile.d/file

    /etc/profile

    /etc/bashrc

    /mingjie/.bashrc

    /mingjie/.bash_profile

    由于ulimit -n的脚本命令加载在第二部分,用户登录时由于权限原因在第二步还不能完成ulimit的修改,所以ulimit的值还是系统默认的1024。所以想彻底改变这种问题,就必须做如下操作:修改/etc/security/limits.conf

    里面有很详细的注释,比如

    * soft nofile 2048

    * hard nofile 32768

    就可以将文件句柄限制统一改成软2048,硬32768

    那么什么是软限制,什么是硬限制 ?

    硬限制是实际的限制,而软限制,是warnning限制,只会做出warning

    这样就实际地增大了文件句柄数。

    第二:分析句柄数,查找原因,这是解决问题最根本的办法。那么如何分析那,就需要用到lsof这个命令了(关于这个命令大家可以在网上学习学习)。

    (1)统计各进程打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

    (2)统计各用户打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

    (3)统计各命令打开句柄数:lsof -n|awk ''|sort|uniq -c|sort -nr

    展开全文
  • 修改文件句柄数在Linux下,我们使用ulimit -n 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象...
  • 【运维笔记】linux最大文件句柄数

    千次阅读 2020-06-09 11:59:46
    在linux服务器大并发调优时,其修改linux最大文件句柄数是最常修改的参数之一 目前:阿里云服务器默认为:open files (-n) 65535 [root@iZbp16qstyvxjc2nlzquvpZ ~]# ulimit -a core file size (blocks, -c) 0 data ...

    在linux服务器大并发调优时,其修改linux最大文件句柄数是最常修改的参数之一

    目前:阿里云服务器默认为:open files (-n) 65535

    [root@iZbp16qstyvxjc2nlzquvpZ ~]# 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) 63457
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 65535
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 63457
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

    亚马逊服务器默认为open files: (-n) 1024

    [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) 39188
    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) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 655350
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

    备注:

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

    执行下面命令即可修改最大句柄数为655350:

    [root@demo  /root]#ulimit -n 655350
    

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

    另一种方法就是修改linux系统参数。vi /etc/security/limits.conf 添加:

    # End of file
    # -----------分割线,上面是配置文件的模板,下面是自己添加的------------------------
    *                soft   nofile           655350         #表示任何一个用户可以打开的最大的文件描述符数量
    *                hard    nofile          655350
    *                soft    nproc           655350         #表示任何一个用户可以打开的最大的进程数
    *                hard    nproc           655350
    @student         hard    nofile          65535          #student组中的任何人最多能打开文件描述符数量是65535,并且会在打开65000个时发出警告
    @student         soft    nofile          65000
    "/etc/security/limits.conf" 70L, 3225C
    

    修改以后保存,注销当前用户,重新登录,执行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) 39182
    max locked memory       (kbytes, -l) 64
    max memory size         (kbytes, -m) unlimited
    open files                      (-n) 655350
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    real-time priority              (-r) 0
    stack size              (kbytes, -s) 8192
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 655350
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    [root@localhost ~]# 
    














    参考文献:
    linux最大文件句柄数:https://jinjiajin.net/101.html


























    注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!


    持续更新中…

    如有对思路不清晰或有更好的解决思路,欢迎与本人交流,微信:seesun2012(非紧急项目请加QQ群解答),QQ群:273557553
    你遇到的问题是小编创作灵感的来源!


    展开全文
  • 修改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默认最大文件句柄数是1024个,在linux服务器文件并发量比较大的情况下,系统会报"too many open files"的错误。故在linux服务器高并发调优时,往往需要预先调优Linux参数,修改Linux最大文件句柄数。...
  • 文章目录进程和文件句柄概念进程文件句柄数的查看ulimit 修改进程文件句柄数限制持久化修改用户进程文件句柄数限制持久化修系统服务进程文件句柄数限制linux系统总限制更新 进程和文件句柄概念 一个...
  • Linux 修改文件最大句柄数

    千次阅读 2020-12-20 00:47:17
    在linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。在linux中执行ulimit -a 即可查询linux相关的参数。[root@SZ~]# ulimit -acore file size (blocks, -c) ...
  • 如果用户得到的错误消息声明由于打开文件数已经达到了最大值,从而他们不能打开更多文件,则可能需要增加该值。可将这个值设置成有任意多个文件,并且能通过将一个新数字值写入该文件来更改该值。 缺省设置:4096 ...
  • Linux 修改最大文件句柄数

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

    千次阅读 2014-07-25 16:49:16
    到底最大文件数被什么限制了?too many open files错误到底可以通过什么参数控制?网上的很多文章说的大致步骤是没有错的,大致如下:shell级限制 通过ulimit -n修改,如执行命令ulimit -n 10...
  • 命令可以看到单个进程能够打开的最大文件句柄数量(socket连接也算在里面)。系统默认值1024。对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说...
  • 为什么要修改用户打开的文件数系统默认单个进程可以打开1024个文件,对于一些应用如tomcat、oracle等,运行时经常open成千上万个文件,系统管理员需根据系统上运行的应用需求,修改系统文件数限制。系统中除了有...
  • 1.查看文件句柄数 ulimit -a 列出结果的 open files 就是当前支持的最大句柄 2.修改默认设置 执行命令 vim /etc/security/limits.conf 在文件末尾加上 * soft nofile 30000 #超过会报警 * hard nofile 65536 #...
  • 对于“linux修改单个进程可打开的最大文件句柄数”,在网上搜索了很多教程,基本都说得不全或者已经过时了,经过亲自试验,修改成功,现总结如下:1./etc/security/limits.conf中指定的nofile的,nofile有上限,...
  • 进程打开的最大文件句柄数设置

    千次阅读 2020-02-09 18:58:44
    下面是 ulimit命令的一些选项: 查看进程打开文件最大限制 cat /proc/sys/fs/file-max 查看系统级的最大限制 ulimit -n 查看用户级的限制(一般是1024 华为阿里这样的是65535) 查看某个进程已经打开的文件数 修改...
  • 设置文件句柄

    2021-08-14 05:45:21
    使用以下命令来确定整个系统中文件句柄最大数量:# cat /proc/sys/fs/file-max32768Oracle 建议将整个系统的文件句柄值至少设置为 65536 。通过直接更改 /proc 文件系统,您可以不必重新启动机...
  • linux修改句柄数

    千次阅读 2021-01-12 07:58:01
    linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一。在linux中执行ulimit -a 即可查询linux相关的参数,如下所示:[root@mongodb11 ~]# ulimit -acore file ...
  • 利用ulimit命令可以对资源的可用性进行控制。 -H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。...limit的可以是一个数值,也可以是一些特定的,比如:hard,so
  • 修改linux的最大文件句柄数限制

    千次阅读 2018-10-12 13:58:25
    修改linux的最大文件句柄数限制 对于一般的应用来说(象Apache、系统进程)1024完全足够使用。但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有点捉襟见肘了。如果单个进程打开的文件句柄数量超过了...
  • 修改Linux最大文件句柄数踩过坑

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

    2018-12-24 23:20:00
    1. Linux系统文件句柄数概念 文件句柄(Windows) 文件描述符(Unix/Linux):file discriptor,fd。对于内核而言,所有打开的文件都是通过文件描述符引用,文件描述符是一个非负整数,变化范围是0~(OPEN_MAX-1)。...
  • Linux服务器修改文件句柄数最大进程限制 1、临时修改的方法: ulimit -HSn 102400 此方法当前会话有效 2、永久修改方法(修改单个进程打开的最大句柄) 修改vi /etc/security/limits.conf,在后面添加一下内容,...
  • 查看某个进程已经打开的文件数 修改限制 临时修改 ulimit -HSn 2048 永久修改 vi /etc/security/limits.conf 转载自: https://www.cnblogs.com/cjsblog/p/9367043.html
  • linux操作系统中文件句柄数的限制

    千次阅读 2020-04-09 11:52:22
    在生产环境Linux系统中,基本上都需要解除文件句柄数的限制。原因是,Linux的系统默认值为1024,也就是说,一个进程最多可以接受1024个socket连接。这是远远不够的。 文件句柄,也叫文件描述符。在Linux系统中,...
  • 都知道Linux系统的特性,一切皆文件,所以在运行zabbix这样的服务时,其中重要的一个调优就是调整linux系统的最大文件句柄数,解决“too many open files”的问题,增大程序运行允许打开的文件,提高性能。...
  • Linux之进程句柄数

    千次阅读 2019-11-14 13:52:30
    一般情况下,我们需要对文件句柄数、进程等做一些标准化的配置。 2.进程和句柄的概念 一个程序可能打开多个进程,一个进程在运行中会打开很多资源,如文件file、通讯连接socket、正在监听的端口等,我们都统称为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 81,971
精华内容 32,788
关键字:

文件句柄数最大值