Syslog-ng 3.0%95CPU的使用?

我在我的机器上使用syslog-ng 3.0。 有一台机器,从其他三台机器获取日志。 但最近,当我使用top来监视cpu的使用情况时(主要的),我发现syslog-ng使用了cpu的95%。 我使用第二深度包含在我的confs。 这个问题有什么可能的原因?

提前致谢。

你问的是错误的问题 – 你需要关注系统性能 ,而不是屏幕上的数字。
如果你的系统运行正常,性能满足你的要求,并且你的负载平均值不是很高(表示需要长时间的等待CPU来获得CPU),你没有问题要解决。

如果您遇到性能问题,那么您应该询问我们有关性能问题(事实上,您的CPU是固定的,在尝试帮助您解决性能问题时会很有帮助)。


你不会告诉我们你正在谈论哪个“CPU利用率”数字,但是真的没关系 – “100%CPU使用率”是一件坏事,这是一个常见的误解。 事实并非如此。
运行在100%CPU利用率下的计算机在没有任何性能问题的情况下不会出现问题,除非您预计将来(在系统的整个生命周期内)可用的CPU带宽将被过度增加。

Syslog-ng确实使用了大量的CPU资源,而单个CPU显示的95%一致性似乎很高。 我有一个单独的CPU系统,运行syslog-ng 2.1.4(对于debugging)和20多个Linux服务器(警告),带有<1Gb内存。 Top显示%CPU为93-83%。

filter非常灵活,但没有任何优化或逻辑检查; syslog-ng依赖于你。 遇到类似的情况,我审查了我的所有filter的逻辑错误,并优化了订单。 清理和优化将我的利用率降低了10%以上。 我build议:

  • 只传送值得logging的事件。 将客户端的优先级设置为警告或更高。 如果您需要来自特定守护程序的信息优先级事件(例如authpriv),请为该守护程序添加一个/etc/syslog.conf行。 传输的事件越less意味着CPU使用率越低。
  • 首先放置最常用的filter ,尤其是 如果他们消除/减lesslogging的事件。 再次处理的事件越less意味着CPU使用率越低
  • 在日志指令上串行运行filter,而不是在单个filter中作为AND条件运行。 包括可能会并行检查两个条件,尽pipe一个失败。

在查看时,请检查磁盘I / O等待,并确认您使用的是本地UDP协议(避免使用TCP)。 希望有所帮助。