pacemaker.log 文件中充斥着“打开文件过多 (24)”

pacemaker.log 文件中充斥着“打开文件过多 (24)”

我的系统目前是 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

相关内容