zoukankan      html  css  js  c++  java
  • linux最大打开文件句柄数

    linux最大打开文件句柄数,即打开文件数最大限制,就是规定的单个进程能够打开的最大文件句柄数量(Socket连接也算在里面,默认大小1024)

    liunx中文件句柄有两个限制,一种是用户级的,一种是系统级的(也叫内核级)

    • 系统级的最大限制:

      cat /proc/sys/fs/file-max

    • 用户级的最大限制

      ulimit -n(默认是1024,向阿里云华为云这种云主机一般是65535)

    附ulimit 参数说明:

    选项 [options] 含义 例子
    -H 设置硬资源限制,一旦设置不能增加。 ulimit – Hs 64;限制硬资源,线程栈大小为 64K。
    -S 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。 ulimit – Sn 32;限制软资源,32 个文件描述符。
    -a 显示当前所有的 limit 信息。 ulimit – a;显示当前所有的 limit 信息。
    -c 最大的 core 文件的大小, 以 blocks 为单位。 ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。
    -d 进程最大的数据段的大小,以 Kbytes 为单位。 ulimit -d unlimited;对进程的数据段大小不进行限制。
    -f 进程可以创建文件的最大值,以 blocks 为单位。 ulimit – f 2048;限制进程可以创建的最大文件大小为 2048 blocks。
    -l 最大可加锁内存大小,以 Kbytes 为单位。 ulimit – l 32;限制最大可加锁内存大小为 32 Kbytes。
    -m 最大内存大小,以 Kbytes 为单位。 ulimit – m unlimited;对最大内存不进行限制。
    -n 可以打开最大文件描述符的数量。 ulimit – n 128;限制最大可以使用 128 个文件描述符。
    -p 管道缓冲区的大小,以 Kbytes 为单位。 ulimit – p 512;限制管道缓冲区的大小为 512 Kbytes。
    -s 线程栈大小,以 Kbytes 为单位。 ulimit – s 512;限制线程栈的大小为 512 Kbytes。
    -t 最大的 CPU 占用时间,以秒为单位。 ulimit – t unlimited;对最大的 CPU 占用时间不进行限制。
    -u 用户最大可用的进程数。 ulimit – u 64;限制用户最多可以使用 64 个进程。
    -v 进程最大可用的虚拟内存,以 Kbytes 为单位。 ulimit – v 200000;限制最大可用的虚拟内存为 200000 Kbytes。

    查看某个进程的最大打开文件数和当前打开文件数

    先找到该进程的进程号,然后查看/proc/[pid]/limits和fd

    /proc/[pid]/limits 显示当前进程的资源限制

    /proc/[pid]/fd 是一个目录,包含进程打开文件的情况

     ps:如果要查看某个进程的线程的详细信息,/proc/[pid]/task

    修改最大限制

    用户级的修改

    • 用户级修改临时生效方法:(重启后失效)
    ulimit -SHn 10000

      ulimit 命令分软限制和硬限制,加-H就是硬限制,加-S就是软限制。默认显示的是软限制,如果运行ulimit 命令修改时没有加上-H或-S,就是两个参数一起改变。硬限制就是实际的限制,而软限制是警告限制,它只会给出警告。

    • 用户级修改永久有效方式:
    vi /etc/security/limits.conf

    修改配置文件/etc/security/limits.conf,加入:
    * soft nofile 65535
    * hard nofile 65535
    echo "* soft nofile 65535" >> /etc/security/limits.conf
    echo "* hard nofile 65535" >> /etc/security/limits.conf
    * 表示所用的用户,但有的系统不认, 需要具体的用户名, 比如:
    root soft nofile 65535
    root hard nofile 65535
    重新登录验证,或许reboot后验证。

    系统级的修改:

    其实上面的修改都是对一个进程打开的文件句柄数量的限制,我们还需要设置系统的总限制才可以。

    假如,我们设置进程打开的文件句柄数是1024 ,但是系统总限制才500,所以所有进程最多能打开文件句柄数量500。从这里我们可以看出只设置进程的打开文件句柄的数量是不行的。所以需要修改系统的总限制才可以。

    • 系统级修改临时生效方式:
    echo  655350 > /proc/sys/fs/file-max
    • 系统级修改永久生效方式:
    vi /etc/sysctl.conf
    

    加入  fs.file-max=655350

    系统级永久生效方式修改后,重启服务器,才能生效。

    • 查看系统级文件句柄修改,是否生效
    sysctl -p
    

    参考:https://www.cnblogs.com/sxdcgaq8080/p/11136952.html

  • 相关阅读:
    学习笔记datatablexml转换
    立即执行函数
    MySQL基操—1.Linux下安装(CentOS6/7yum、rpm、tar)
    Linux1.11.shell(环境变量配置文件)
    三国HR评估报告
    毕业5年后拉开差距的原因
    职业的选择
    WPF图片的缩放节省内存
    .asmx支持post请求或者get请求调用
    ionic3遇到的刷新页面服务器关闭的问题
  • 原文地址:https://www.cnblogs.com/xulan0922/p/11937472.html
Copyright © 2011-2022 走看看