• 系统调优:如何解决系统报错too many open files


    一、检查系统版本是否手工升级

    关于lsb_release -a和/etc/issue显示的发行版本号不同,原因只有一个:系统内核手动升级了

    对于高并发高http连接的应用程序例如www或Java,会遇上Socket/File: Can’t open so many files或too many open files的问题,最好通过使用ulimit -n xx 修改每个进程可打开的文件数,缺省值是1024

    二、如何增大用户打开最大进程数

    ulimit -a 来显示当前的各种用户进程限制

    系统原始文件

    ulimit命令有分软硬设置,加-H硬限制是实际的限制,加-S软限制是warnning限制,只会做出warning;

    grep '^*' /etc/security/limits.conf

    * soft  65535

    * hard 65535

    修改方法:

    方法一:

    1.在/etc/rc.local中增加ulimit -SHn 65535

      编辑rc.local文件增加一行ulimit -SHn 65535,或者直接执行命令:echo "ulimit -SHn 65535">>/etc/rc.local (此时不会立即生效,需重启服务器,执行步骤2则可使之立即生效)

    2.在/etc/profile中增加ulimit -SHn 65535

      编辑profile文件增加一行ulimit -SHn 65535,或者直接执行命令:echo "ulimit -SHn 65535">>/etc/profile,然后source /etc/profile让参数即时生效

    方法二:修改limits.conf配置文件生效

    nofile(可打开的文件描述符的最大数)和nproc(单个用户可用的最大进程数量)

    修改后执行命令查看:grep '^*' /etc/security/limits.conf,显示如下:

    * soft nproc 65535

    * hard nproc 65535

    * soft nofile 65535

    * hard nofile 65535

    退出用户终端重新登录,使配置文件生效

    详情请查看:http://blog.51cto.com/manfred12/1541274

    附:

    ulimit用于shell启动进程所占用的资源

    参数介绍:

    -H 设置硬件资源限制.
    -S 设置软件资源限制.
    -a 显示当前所有的资源限制.
    -c size:设置core文件的最大值.单位:blocks
    -d size:设置数据段的最大值.单位:kbytes
    -f size:设置创建文件的最大值.单位:blocks
    -l size:设置在内存中锁定进程的最大值.单位:kbytes
    -m size:设置可以使用的常驻内存的最大值.单位:kbytes
    -n size:设置内核可以同时打开的文件描述符的最大值.单位:n
    -p size:设置管道缓冲区的最大值.单位:kbytes
    -s size:设置堆栈的最大值.单位:kbytes
    -t size:设置CPU使用时间的最大上限.单位:seconds
    -v size:设置虚拟内存的最大值.单位:kbytes

     
  • 相关阅读:
    表单小知识
    HTML列表,表格与媒体元素
    P1008 三连击
    打鱼晒网问题
    最小编辑距离算法
    算法设计与分析--01背包问题(动态规划法解决)
    文件读写函数
    C语言中数据输入输出到文件操作freopen()函数(1)
    输入输出框架(未完待续)
    阶乘1到阶乘n的和
  • 原文地址:https://www.cnblogs.com/pistachio123/p/9628476.html
Copyright © 2020-2023  润新知