![pacemaker.log 文件中充斥着“打开文件过多 (24)”](https://linux22.com/image/759166/pacemaker.log%20%E6%96%87%E4%BB%B6%E4%B8%AD%E5%85%85%E6%96%A5%E7%9D%80%E2%80%9C%E6%89%93%E5%BC%80%E6%96%87%E4%BB%B6%E8%BF%87%E5%A4%9A%20(24)%E2%80%9D.png)
我的系统目前是 Centos 8,我的 /var/log/pacemaker/pacemaker.log 文件充斥着数 GB 的数据,大多数错误消息都显示以下消息。这些消息的数量超过 1000 条,它们在 10 分钟内就填满了近 10-15 GB 的数据
Oct 13 12:10:46 vm01 pacemaker-attrd [23173] (qb_ipcs_us_connection_acceptor) error: Could not accept client connection: Too many open files in system (23)
Oct 13 12:10:46 vm01 pacemaker-attrd [23173] (qb_ipcs_us_connection_acceptor) error: Could not accept client connection: Too many open files in system (23)
之前在我的环境中使用的是 Centos 7,我从未见过这种日志泛滥。升级到 Centos 8 后,这个问题开始出现
以下是 Centos 8 的 ulimit 输出
[root@vm01 ~]# ulimit -n
65536
问题是这个问题在某一天随机发生,我总是必须手动清空 /var/log/pacemaker/pacemaker.log 文件,以确保系统在达到 100% 存储后不会停止
发生此问题时 lsof 的输出。
[root@vm01 ~]# lsof | wc -l
416113
我被告知要修改 /etc/security/limits.conf 上的以下几行,即将 65536 更改为 524288
[root@vm01 ~]# cat /etc/security/limits.conf | grep root
root hard nofile 1048576
root soft nofile 65536
另一个更改是在 /etc/sysctl.conf 上进行以下更改,即再次将 65536 更改为 524288,然后运行 /sbin/sysctl -p
[root@vm01 ~]# cat /etc/sysctl.conf | grep -i fs.file
fs.file-max = 65536
请帮助我解决这个问题,并让我知道是否可以在环境中应用 sysctl.conf 和 limits.conf 的更改来解决这个问题
答案1
你的进程的 ulimit 是多少pacemaker
?
了解详情cat /proc/<procid>/limits
例子:
$ cat /proc/8933/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 128443 128443 processes
Max open files 16384 16384 files
Max locked memory 65536 65536 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 128443 128443 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
这将有助于您进一步分析这一点。
如果您pacemaker
以较低的 ulimit 运行并且正在使用 systemd,则您只需添加 systemd-drop-in(配置)即可向您的服务添加配置,而无需操作原始单元文件pacemaker
。
如果您的 systemd-unit-file 具有此路径:
/etc/systemd/system/pacemaker.service
,您可以创建一个目录/etc/systemd/system/pacemaker
并将带有扩展名的文件.conf.
放入此目录中。
该文件的内容可能是:
[Service]
LimitNOFILE=65536
之后systemctl daemon-reload
,重新启动起搏器,更改就会应用。
参考:https://www.freedesktop.org/software/systemd/man/systemd.exec.html