centos调优之文件句柄ulimit

5 篇文章 0 订阅
4 篇文章 0 订阅

通过netstat -anlp|wc -l 查看到大量tcp连接;
过滤netstat -anlp|grep WAIT|wc -l 其中的WAIT会话比较多;可通过增加ulimit优化处理能力;
open files 设置的是单进程可打开的最大文件句柄数.

1.查看用户级别的系统配置

ulimit -a
查询用户级别的open file文件符号限制数
ulimit -n

在nginx默认配置中:一个process,1024个连接。在并发时很容易超过此数字,可适当调整此配置及nginx的配置。

查询进程限制数
ulimit -u
一些计算规则

open files 设置的是单进程可打开的最大文件句柄数,即用户可打开的最大文件句柄数是:

(max user processes) * (open files)

当有时发现我们的应用打开了很多文件,或者tcp数很高,但还是能用,原因在于:

没有超过系统最大句柄数限制, 即 (max user processes) * (open files);
没有超过 max user processes 限制;
没有超过单进程最大句柄数设置,即65535;
centos>7属于Systemctl管理的应用,详见下面第3点

则,应用均可正常运行。

# 统计www用户打开的进程数
lsof -u www | awk '{print $2}' | uniq -c | wc -l

#统计www用户打开的占用的所有文件句柄数
 lsof -u www | wc -l

2.修改用户级别的配置

永久生效:

vi /etc/security/limits.conf

在文件内容最后一行,添加如下的行

* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536

说明:* 代表针对所有用户;
noproc 是代表最大进程数;
nofile 是代表最大文件打开数;

另:vi /etc/security/limits.d/-nproc.conf 也可以配置,会覆盖上面的文件配置
修改后退出当前session,重新登录即可看到修改,如果有应用确实受影响,可立即重启服务器生效;

3.使用services的应用【特别注意:systemctl管理】

/etc/security/limits.conf开头说明:

# /etc/security/limits.conf
#
#This file sets the resource limits for the users logged in via PAM.
#It does not affect resource limits of the system services.

在Centos7 & ubuntu 系统中,使用Systemd替代了之前的SysV。/etc/security/limits.conf文件的配置作用域缩小了。

/etc/security/limits.conf的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。
因此登录用户的限制,通过/etc/security/limits.conf与/etc/security/limits.d下的文件设置即可。

对于systemd service的资源设置,则需修改全局配置:
DefaultLimitNOFILE
DefaultLimitNPROC

/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是用户实例使用的。

vim /etc/systemd/system.conf
DefaultLimitNOFILE=100000
DefaultLimitNPROC=65535
重启系统

通过cat /proc/pid/limits可以看到限制这些服务的大小

4.系统级别的打开文件最大数

max-file:表示系统级别的能够打开的文件句柄的数量。
是对整个系统的限制,并不是针对用户的。此值一般会较大。

cat /proc/sys/fs/file-max
 和
sysctl -a | grep  fs.file-max

echo "fs.file-max = 6553560" >> /etc/sysctl.conf
// 立即生效,此方式永久生效
sysctl -p 

容器的限制说明:

docker容器的limit限制,其实依赖于进程docker服务,属于systemctl管理的应用,则所有容器limit最终与docker服务一致;
而docker.service内容中显示infinity不受限制!!
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity

临时生效-session有效:

ulimit -n 65536
ulimit -u 65536

退出当前session,会失效;作为临时测试可使用;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS系统中,我们可以通过调整文件句柄数来进行性能优化。以下是一些文件句柄调优的方法: 1. 修改配置文件:打开/etc/sysctl.conf文件,并在文件的末尾添加以下行: ``` fs.file-max = 2000000 ``` 这将增加系统中可打开的文件句柄的最大数量。然后,使用以下命令使其立即生效: ``` sysctl -p ``` 2. 设置用户级别的文件句柄数限制:文件句柄数的限制取决于max user processes(最大用户进程数)和open files(每个进程可打开的最大文件句柄数)两个参数的乘积。您可以通过修改以下文件来调整这些参数: ``` /etc/security/limits.conf ``` 在该文件中,您可以为特定的用户或用户组设置文件句柄数限制。例如,您可以添加以下行来设置所有用户的文件句柄数限制为100000: ``` * hard nofile 100000 ``` 然后,重新登录用户以使更改生效。 3. 检查系统级别的文件句柄数限制:您还可以检查系统级别的文件句柄数限制。您可以运行以下命令来查看当前系统级别的限制: ``` cat /proc/sys/fs/file-max ``` 如果需要增加系统级别的文件句柄数限制,您可以使用以下命令: ``` echo "fs.file-max = 6553560" >> /etc/sysctl.conf sysctl -p ``` 请注意,文件句柄调优可能涉及到系统级别的更改,因此在进行调整之前,请确保您具备适当的权限并备份配置文件。此外,根据您的具体需求,还可能需要根据系统负载和资源使用情况进行进一步调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值