• 系统调优:如何解决系统报错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

     
  • 相关阅读:
    【转】性能测试分享---java vuser协议(2)---LoadRunner篇
    【转】性能测试分享---java协议(1)------jemter篇
    windows下怎么修改mysql密码
    linux下怎么修改mysql的字符集编码默认分类
    java使用Redis2--保存对象
    java使用Redis1--安装与简单使用
    java实现hash一致性算法
    Redis Sentinel初体验
    Redis持久化实践及灾难恢复模拟
    Redis学习笔记
  • 原文地址:https://www.cnblogs.com/pistachio123/p/9628476.html
Copyright © 2020-2023  润新知