Linux下ulimit关于open files的配置过程

 更新时间:2024年12月19日 08:53:54   作者:忍冬行者  
本文介绍了在CentOS系统中设置文件描述符和进程限制的方法,包括/etc/security/limits.conf文件和systemd的system.conf文件的配置,这些设置对于大数据系统的稳定运行至关重要

ulimit关于open files的配置

操作系统默认只能打开1024个文件,打开的文件超过这个数发现程序会有“too many open files”的错误,1024对于大数据系统来说显然是不够的,如果不设置,基本上整个大数据系统是“不可用的”,根本不能用于生产环境。

在centos 5/6 等版本中,资源限制的配置可以在 /etc/security/limits.conf 设置,针对root/user等各个用户或者*代表所有用户来设置。

当然,/etc/security/limits.d/ 中可以配置,系统是先加载limits.conf然后按照英文字母顺序加载limits.d目录下的配置文件,后加载配置覆盖之前的配置。

一个配置示例

如下:

*     soft   nofile    65535
*     hard   nofile    65536
*     soft   nproc     65535
*     hard   nproc     65535
*     soft   core      65535
*     hard   core      65535

配置方法

如下:

echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf

在bash中,有个ulimit命令,提供了对shell及该shell启动的进程的可用资源控制。主要包括打开文件描述符数量、用户的最大进程数量、coredump文件的大小等。

在CentOS 7 / RHEL 7的系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。

对systemd service的资源限制的配置

全局的配置,放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。

同时,也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/*.conf 和 /etc/systemd/user.conf.d/*.conf

其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。

systemd.conf.d/*.conf中配置会覆盖system.conf。

配置参数如下:

DefaultLimitCORE=infinity
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535

注意:

  • 修改了system.conf后
  • 需要重启系统才会生效

针对单个Service,也可以设置,以nginx为例。

编辑 /usr/lib/systemd/system/nginx.service 文件,或者 /usr/lib/systemd/system/nginx.service.d/my-limit.conf 文件

做如下配置:

[Service]
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000

然后运行如下命令,才能生效。

systemctl daemon-reload
systemctl restart nginx.service

查看一个进程的limit设置:

cat /proc/YOUR-PID/limits

例如我的一个nginx service的配置效果:

cat /proc/$(cat /var/run/nginx.pid)/limits

顺便提一下:

CentOS7自带的/etc/security/limits.d/20-nproc.conf,里面默认设置了非root用户的最大进程数为4096,limit.conf的配置会被limit.d目录中的配置覆盖,这点需要注意,针对普通用户,需要修改20-nproc.conf。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Linux给普通用户加超级用户权限的方法

    Linux给普通用户加超级用户权限的方法

    这篇文章主要介绍了Linux中让普通用户拥有超级用户的权限,这样就不用使用SUDO命令了,需要的朋友要以试一下
    2013-11-11
  • Linux堆内存修改及清理命令方式

    Linux堆内存修改及清理命令方式

    这篇文章主要介绍了Linux堆内存修改及清理命令方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Linux 服务器硬件数据的收集及使用案例

    Linux 服务器硬件数据的收集及使用案例

    这篇文章主要介绍了Linux 服务器硬件数据的收集,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Linux下Redis设置密码及开机自启动

    Linux下Redis设置密码及开机自启动

    这篇文章主要介绍了Linux下Redis设置密码及开机自启动的相关资料,需要的朋友可以参考下
    2016-12-12
  • Linux 下rpm命令参数详解

    Linux 下rpm命令参数详解

    linux下的rpm常用命令,主要是用来安装rmp包,是linux下比较方便的东西
    2008-06-06
  • php-fpm可执行文件出现乱码的解决方法

    php-fpm可执行文件出现乱码的解决方法

    这篇文章主要介绍了php-fpm可执行文件出现乱码的解决方法,需要的朋友可以参考下
    2014-04-04
  • ZFS是什么?使用ZFS的理由及特性介绍

    ZFS是什么?使用ZFS的理由及特性介绍

    今天小编就为大家分享一篇关于ZFS是什么,及其特性介绍与使用理由的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • 移植busybox构建最小根文件系统的步骤详解

    移植busybox构建最小根文件系统的步骤详解

    这篇文章主要介绍了移植busybox构建最小根文件系统的步骤,本文分为五部给大家介绍的非常详细,需要的朋友可以参考下
    2019-07-07
  • Ubuntu下安装Docker教程

    Ubuntu下安装Docker教程

    这篇文章主要介绍了Ubuntu下安装Docker教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-02-02
  • 比较详细的基于CentOS的WWW服务器架设指南

    比较详细的基于CentOS的WWW服务器架设指南

    本文参考了网上高手的教程和结合自己的实践经验而来。网上关于LAMP安装配置的教程虽然很多,但长篇大论的让你抓不到重点,短小精悍的对新手来说又难了点,所以初次配置时最容易在某个环节卡住,从而打击了学习的激情或者耽误了宝贵的时间。于是就整理出这个学习笔记。如果文中有错误的地方,恳请大家指正,不要误导了初学者。
    2008-06-06

最新评论