最近,我们的一位最资深的工程师问我关于使用 syslog-ng 与将日志从我们的应用程序写入磁盘的上下文切换的问题。
上下文: 我想使用 syslog-ng 将我们用 C++ 编写的应用程序的输出记录并发送到远程日志服务器主机上的 logstash,然后将其全部推送到 elasticsearch 中并使用 Kibana 作为前端来查看日志、分析和派生有用的指标。 ELK 堆栈
我们目前使用 4K 或 8K 的 FSYNC 缓冲区,它以一定间隔将日志输出到磁盘上的日志文件;也就是说,我们不会为每个日志条目强制写入磁盘。
像任何追求性能的优秀工程师一样,他想了解我们是否会看到更好的上下文切换,或者我们是否可以通过利用 syslog-ng 来提高性能。
所以问题是:使用 syslog-ng 会减少还是增加该应用程序主机上的上下文切换。
我的专业知识引导我提出这个问题 - 考虑到我没有足够的知识来自己得出答案。
长期潜伏者,仍然是发帖新手。谢谢!
最佳答案
这取决于您必须处理多少日志以及您愿意投入多少资源。
我们将 Kibana/Elastic 搜索与 Logstash 结合使用,负载确实很重,但我们又拥有 400 多台服务器,所以 YMMW。 Java 也不以对资源的宽容着称。然而,从好的方面来说,它是fairly easy to set up。 .
可以使用 grok 解析 Logstash 中的日志。启动几个 VM 并试用它,如果你有一个大型环境,微调配置是使其可以承受的必要条件,或者如果你有钱,你可以向它投入硬件,直到它运行为止。
关于c++ - 有没有人知道上下文切换 - 通过 FSYNC 与 syslog-ng 从应用程序记录到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25798086/