c++ - 有没有人知道上下文切换 - 通过 FSYNC 与 syslog-ng 从应用程序记录到磁盘

标签 c++ linux logging linux-kernel syslog-ng

最近,我们的一位最资深的工程师问我关于使用 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/

相关文章:

logging - 通过 RSS 订阅 log4j 日志?

java - Log4j2-日志在其他位置并行记录

c++ - CGAL 如何判断三角形是否在边界上

python - C++ 扩展中的 DateTime 对象方法出现问题

linux - 如何输出linux中每个文件的第一行?

java - 缓冲记录器 (Java)

c++ - 转换为整数类型或其他类型不能出现在常量表达式中

C++11 vector 包含 2 个不同的子类,但不同时

linux - 运行高内存消耗(Python/Perl)脚本的良好环境是什么?

linux - 在文件内搜索和替换