精华内容
下载资源
问答
  • 这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid), 更要注意这个问题。 网上的教程,都只是简单说明要如何设置ulimit和file-max, 但这两者之间的关系差别,并没有...

    概要:
    linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid), 更要注意这个问题。
    网上的教程,都只是简单说明要如何设置ulimit和file-max, 但这两者之间的关系差别,并没有仔细说明。

    说明:
    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都需要设置,否则就可能出现文件描述符用尽的问题

    修改:
    1.修改file-max

    # echo  6553560 > /proc/sys/fs/file-max  //sysctl -w "fs.file-max=34166",前面2种重启机器后会恢复为默认值
    vim /etc/sysctl.conf, 加入以下内容,重启生效
    
    fs.file-max = 6553560
    

    2.修改ulimit的open file,系统默认的ulimit对文件打开数量的限制是1024

    # ulimit -HSn 102400  //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile
    或
    # vim /etc/security/limits.conf  //加入以下配置,重启即可生效
    * soft nofile 65535 
    * hard nofile 65535
    
    ulimit命令
    -H 使用硬资源控制
    -S 使用软资源控制
    -a 查看所有的当前限制
    -n 能打开的最大文件描述符数
    -t 限制最大的 CPU 占用时间(每秒)
    -u 限制最大用户进程数
    -v 限制虚拟内存大小(kB)
    ulimit -HSn 65536  #硬资源和软资源同时限制为最大打开文件描述符数65546
    ulimit -v ulimited  #将虚拟内存限制改为无限制

    附录:
    附录1.
    为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。

    附录2.
    如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。
    这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改!!!

    注明:

    查看linux系统哪些进程打开了file:

    用lsof -p [进程ID] 可以看到某ID的打开文件状况。

    进程ID可能用 ps -ef|grep java列出weblogic的进程ID,然后用此ID套入lsof -p ID号,咳,一大堆的请求哟,这显然是网络请求过多造成了 Too many open files。

    适当调整后便已消除这种现象。

     

    当前默认设置的最大文件数  ulimit -n 
    系统打开最大文件数: cat /proc/sys/fs/file-max
    统计当前某个用户打开的文件数(包含socket数和会话数)  lsof -u username|wc -l
    统计当前所有进程的文件打开数  lsof |egrep -v 'TCP|UDP'|awk '{print $8}' |sort |uniq |wc -l
    分析当前进程打开文件数的排序并此打开文件数最多的进程打开了哪些文件。
    lsof |egrep -v 'TCP|UDP'|awk '{print $2}' |sort -n |uniq -c |sort -nr |head -n1  
    假如结果为 125 1150,第一个数字是个数,第二个数字是pid
    lsof -p 1150 
    查看当前的打开最大数文件数的设置参数:cat /etc/security/limits.conf
    查看当前线程总数
    echo "`ps -eLf |awk '{print $6}'|grep -v NLWP |xargs |sed 's/ /+/g'`" |bc
    查看当前进程数: ps aux |grep -v 'USER'|wc -l
    统计SOCKE联接数: netstat |awk '$1=="unix"'|wc -l

     

    当然我们可以利用脚本动态统计某个进程的文件打开数

    sh-4.1# more test.sh 
    #/bin/sh
    while :; do
            sleep 1800
            lsof -p 29728 |wc -l 
    done

    上面创建了一个test.sh脚本,每1800秒(半个钟)统计29728进程的文件打开数,while :; 的意思是死循环

    然后将test.sh放到后台执行,执行的信息放在openfiles.txt这个文件中

    sh-4.1# nohup ./test.sh > openfiles.txt 2>&1 & 
    sh-4.1# ps -ef | grep test.sh
    root     15030 14812  0 11:45 pts/0    00:00:00 /bin/sh ./test.sh

     

    展开全文
  • linux修改open files:ulimit、file-max linux系统默认的open files 为1024 ,如果程序报错 too many open files错误,就是因为open files 数目不够,需要修改ulimit 和file-max file-max的含义。man proc,可得到...

    linux修改open files:ulimit、file-max

    linux系统默认的open files 为1024 ,如果程序报错 too many open files错误,就是因为open files 数目不够,需要修改ulimit 和file-max

    file-max的含义。man proc,可得到file-max的描述:

    /proc/sys/fs/file-maxThis file defines a system-wide limit on the number of open files for all processes. (Seealso 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 messagesabout running out of file handles, try increasing this value:即file-max是设置 系统所有进程一共可以打开的文件数量 。同时一些程序可以通过setrlimit调用,设置每个进程的限制。如果得到大量使用完文件句柄的错误信息,是应该增加这个值。也就是说,这项参数是系统级别的。

    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都需要设置,否则就可能出现文件描述符用尽的问题修改。

    1.修改file-max

    # echo  6553560 > /proc/sys/fs/file-max
    # sysctl -w "fs.file-max=34166"
    

    前面2种重启机器后会恢复为默认值

    或 `# vim /etc/sysctl.conf `加入以下内容,重启生效
    fs.file-max = 6553560
    

    2.需改open files

    # ulimit -HSn 102400 //这只是在当前终端有效,退出之后,open files又变为默认值。当然也可以写到/etc/profile中,因为每次登录终端时,都会自动执行/etc/profile
    或
    # vim /etc/security/limits.conf //加入以下配置,重启即可生效
    * soft nofile 65535
    * hard nofile 65535
    

    附录1.
    为了让一个程序的open files数目扩大,可以在启动脚本前面加上ulimit -HSn 102400命令。但当程序是一个daemon时,可能这种方法无效,因为没有终端。
    附录2.
    如果某项服务已经启动,再动态调整ulimit是无效的,特别是涉及到线上业务就更麻烦了。
    这时,可以考虑通过修改/proc/’程序pid’/limits来实现动态修改.

    参考链接:

    https://www.cnblogs.com/cncaptain/p/8629502.html

    展开全文
  • nr_open , file_max & file_nr区别

    千次阅读 2016-08-24 22:47:20
    nr_open, file_max & file_nr

    1 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.

    • 单个进程打开文件句柄数上限

    2 file-max & file-nr

    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.
    Historically,the kernel was able to allocate file handles
    dynamically, but not to free them again.
    file-nr:
    The three values in file-nr denote 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.
    Attempts to allocate more file descriptors than file-max
    are reported with printk, look for “VFS: file-max limit reached”.


    • file-max中指定了系统范围内所有进程可打开的文件句柄的数量限制(系统级别, kernel-level)。
    • file-max一般为内存大小(KB)的10%来计算,如果使用shell,可以这样计算:

    grep MemTotal /proc/meminfo | awk ‘{printf(“%d”,$2/10)}’
    410556 # 本人主机测算的数据
    cat /proc/sys/fs/file-max
    406262

    • 我们不需要主动设置这个值,除非这个值确实较小。
      (可能有各种其他原因导致file-max没有设置为内存的10%)

    • 注意:

      If you increase /proc/sys/fs/file-max,
      be sure to increase /proc/sys/fs/inode-max to 3-4
      times the new value of /proc/sys/fs/file-max,
      or you will run out of inodes.
      即修改file-max,最好也要修改inode-max
      inode-max 约等于 3或4 倍file-max。

    • 3 ulimit

      Provides control over the resources available to the shell and to processes started by it,
      on systems that allow such control.

      • 提供对shell及其启动的进程的可用资源(包括文件句柄, 进程数量, core文件大小等)的控制。
      • 这是进程级别的, 也就是说系统中某个session及其启动的每个进程能打开多少个文件描述符,
        能fork出多少个子进程等… 。
      ulimit -n
      1024
      这表示当前用户的每个进程最多允许同时打开1024个文件。
      这1024个文件中还得除去每个进程必然打开的标准输入,
      标准输出,标准错误,服务器监听 socket,进程间通讯的unix域socket等文件,
      那么剩下的可用于客户端socket连接的文件数就只有大概1024-10=1014个左右。
      也就是说缺省情况下,基于Linux的通讯程序最多
      允许同时1014个TCP并发连接。

      参考文献:
      [1] https://www.kernel.org/doc/Documentation/sysctl/fs.txt
      [2] http://blog.csdn.net/guowake/article/details/6615728 博主:guowake
      [3] http://www.cnblogs.com/zengkefu/p/5635153.html 作者:zengkefu

    展开全文
  • Centos 7.3 设置 max open files

    千次阅读 2020-03-19 18:38:18
    查看当前系统限制: ulimit -a 可以看到如下信息: core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited pending signals (-i)...

    查看当前系统限制:

    ulimit -a
    

    可以看到如下信息:

    core file size          (blocks, -c) 0
    data seg size           (kbytes, -d) unlimited
    file size               (blocks, -f) unlimited
    pending signals                 (-i) 1024
    max locked memory       (kbytes, -l) 32
    max memory size         (kbytes, -m) unlimited
    max open files                      (-n) 1024
    pipe size            (512 bytes, -p) 8
    POSIX message queues     (bytes, -q) 819200
    stack size              (kbytes, -s) 10240
    cpu time               (seconds, -t) unlimited
    max user processes              (-u) 4096
    virtual memory          (kbytes, -v) unlimited
    file locks                      (-x) unlimited
    

    其中max open files就是要修改的数值。
    临时修改可以直接使用 ulimit -n 524228修改,如果要永久修改,则需要修改配置文件:

    sudo vi /etc/security/limits.conf
    

    在末尾修改如下两项:

    *         hard    nofile      524288
    *         soft    nofile      524288
    

    然后重新登录系统查询就可以发现数值已经修改了。

    展开全文
  • 在CentOS6.9安装Oracle12C,提示: Hard limit:maxinum open file ...提示maxinum open file descriptors至少需要65536,实际值为65535。 解决方法: 1、查看用户进程限制。执行命令: ulimit -a 可以看到open fil...
  • 在我前面的博客介绍了nginx缓存,但是nginx还有一个很重要的缓存功能只针对于打开的文件句柄以及源信息叫做open_file_cache,open_file_cahce对我们优化nginx性能也是非常有帮助的。 NGINX虽然已经对静态内容做过...
  • Ubuntu 16 – how to increase maximum file open limit ( ulimit -n ) 以下内容为此网页搬运过来的 https://codingweb.lj.studio/ubuntu-16-increase-maximum-file-open-limit-ulimit-n/ 版权归该文章作者所有...
  • Linux(CentOS 7)修改max open files的值

    千次阅读 2019-09-25 23:54:25
    新安装的linux系统允许每个程序的最大打开文件数默认是1024,可以通过ulimit -n命令来查看,查看全部限制,则可以...core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (...
  • Nginx性能提升 - open_file_cache指令

    千次阅读 2019-02-19 14:14:16
    今天我们使用 open_file_cache 指令来尝试提高我们的nginx服务性能 前置工具 strace常用来跟踪进程执行时的系统调用和所接收的信号, 是一个强大的工具。 因为这里本人使用的是mac系统, 对应的mac分析命令 dtruss ...
  • 到此我们就要说起nr_open,与file-max了,网上在说到设置最大文件数时偶尔有些帖子也说到要修改file-max,字面上看file-max确实像是对应最大文件数,而在linux内核文档中它们两的解释是: file-max: The ...
  • 1./etc/security/limits.conf中指定的nofile的值,nofile有...nofile由内核参数nr_open定义的. “在2.6.25内核之前有个宏定义,定义了这个值的最大值,为1024*1024,正好是100万,而在2.6.25内核及其之后,这个值是可
  • jstack遇到Unable to open socket file……

    千次阅读 2020-07-18 23:12:00
    >>> 大家使用jstack的时候偶尔会遇到这样的异常Unable to open socket file…… 下面我们依据openjdk11的code进行分析。 从错误入手 Unable to open socket file这个错误是jstack本身报的,算是一个客户端行为。什么...
  • MySQL的open_file_limit配置迷雾

    千次阅读 2019-11-18 19:00:00
    table_open_cache默认值是2000,max_connections默认值是151+1,因为还有一个extra_max_connections,ulimit -n 的值为1024。 结果如下 [root@mysqlmaster ~]# ps -ef | grep mysqld root 3047 1 0 09:52 pts/2 00:...
  • linux openfile参数修改

    千次阅读 2019-04-10 14:08:31
    cat /proc/14028/limits 查看当前进程配的open files数 Using username "hms". Last login: Wed Mar 27 16:06:34 2019 from 10.35.60.156 hms@linux-198x:~> su root ...
  • linux有效修改max open files/ulimit -n

    万次阅读 2016-03-17 16:49:24
    新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。 使用 ulimit -n 65535 可即时修改,但重启后就无效了。(注ulimit -SHn 65535 等效 ulimit
  • .今天在公司测试RAC安装时,在安装GI软件是检查出错,查询百度都说问题原因是/etc/security/limits.conf文件没有配置好,但是我检查后发现是配置好的,如下图: 难道是参数没有生效吗,后来经过自己的排查发现,/...
  • 从事分布式服务器开发工作的都会遇到,linux下open_file的值默认是1024;max user processes的值默认是4096,在实际用于中,这两个值严重不足,常常需要调整这两个值。默认配置如下:   可以通过以下两种方式...
  • linux中open file设置原则

    千次阅读 2019-11-06 13:14:08
    我们已经了解到想要解决用户出现“**too many open files**”的问题需要同时修改用户级参数文件limits.conf及系统级参数文件sysctl.conf,那么怎么修改才合理呢?怎么修改才能万无一失呢?文章开始我提到,在最初...
  • 原因:虽然叉掉后不影响运行,但每次都会提示,很烦。其实问题也简单,就是缺少English.lng文件。 解决方案:大家也不用下载,直接创建两个文本文档,把下面的代码复制进去,然后文档名及类型改为English.lng,放...
  • max_open_files 导致MySQL产生异常

    千次阅读 2017-11-15 08:52:55
    increase number of max_open_files to more than 1024 ( request : 1210 ) ------------------------------------------------------------------------------------------------ 接着查看MySQL的open_files_...
  • 1. 进入/etc/security/limits.conf,编辑:* soft nproc 65535* hard nproc 65535* soft nofile 65535* hard nofile 65535nofile对应open_files,nproc对应max_user_processes2. 进入/etc/security/limits.d/90-...
  • linux修改open file参数

    千次阅读 2019-01-30 16:27:00
    fs.file-max = 202400 #file-max是内核可分配的最大文件数fs.nr_open = 102400 #nr_open是单个进程可分配的最大文件数 sysctl -p 立即生效 2、文件中添加如下:/etc/security/limits.conf soft nofile 102400 ...
  • Linux的open filefile descriptor区别

    千次阅读 2016-08-24 17:59:32
    open file & file descriptor
  • 【linux】linux修改open file 大小

    千次阅读 2019-04-11 15:45:00
    使用下面命令可以查看openfile数量 ulimit -a linux修改open file 大小,修改步骤如下: 1》修改file-max 修改文件: vi /etc/sysctl.conf 在文件末尾加入: fs.file-max = 6553560 ...
  • linux修改open files数

    千次阅读 2021-05-26 04:42:36
    概要:linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不够。这就需要修改ulimit和file-max。特别是提供大量静态文件访问的web服务器,缓存服务器(如squid),...
  • linux ulimit 查看max open files

    万次阅读 2012-08-21 15:21:00
    有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。 修改办法: ...* soft nofile 8192 * hard nofi
  • 我装的是anaconda2,python版本是2.7.14,使用命令pip install pydensecrf遇到如下错误: pydensecrf/densecrf/external/liblbfgs/lib/lbfgs.c(68) : ...annot open include file: 'stdint.h': No such file o...
  • 又一次加载时报错了,IOError: Unable to open file (File signature not found) h5py\_objects.pyx in h5py._objects.with_phil.wrapper (C:\aroot\work\h5py\_objects.c:2579)() h5py\_objects.pyx in h5py._...
  • linux 系统下open-file文件数限制修改

    万次阅读 2019-01-15 14:05:30
    由于druid的大查询会产生很多临时的中间文件,如/tmp/druid/druid-groupBy-27e88733-d1f1-4589-bf63-ef3a40d4d945_273009ff-02cd-4085-b9f6-e94c7931111...,会造成查询中断,需修改相应的系统的open file限制,其中...
  • 其中nofile对应open_files nproc对应max_user_processes 但是在Linux 6.4之后,如果只修改了该文件中的nproc,那么其他非root用户对应的max_user_processes并不会改变,仍然是1024,这个是因为受到了下面这个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 256,595
精华内容 102,638
关键字:

maxopen提示file