测试zlog写入速度,对短日志不利

发布于 2021-11-17 11:45:38 字数 264 浏览 843 评论 4

zlog使用手册提到25万条日志每秒的速度,我实测了一下,结果比标称还要好,可以达到50万条每秒。

这个速度和单条日志长度无关,我尝试了32字节、64字节、和128字节的日志长度,发现都在50万条每秒左右。这样短日志的吞吐量就不如长日志。我猜测这是磁盘IO次数所限?zlog有没有手段缓存日志来减少IO次数(例如,每2M写一次磁盘),从而提升短日志的吞吐量?

我看到有buffer min和buffer max的设置,但手册提到这是为单条日志设计的,不是很理解其中目的。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2021-11-23 13:34:30

帮宏哥测测宏哥日志系统:

/*
 * This is Micro or printing the log messages
 */
#ifndef cDPRINTF_h
#define cDPRINTF_h

#define LOG_INFO 1
#define LOG_NOTICE 2
#define LOG_DEBUG 4
#define LOG_FATAL 8
#define LOG_ALL 15

extern int g_debug_level;

#if defined(_MSC_VER)
#define D_PRINTF(log_level,__VA_ARGS__){
    if((g_debug_level|LOG_FATAL )& log_level){
        fprintf(stderr,__VA_ARGS__); 
    }
}
#else
#define D_PRINTF(log_level,arg...){
    if((g_debug_level|LOG_FATAL )& log_level){
        fprintf(stderr,arg); 
    }
}
#endif

#endif

终止放荡 2021-11-22 03:18:36

很高兴你喜欢zlog,

前段时间想写zlog 2.0就是想解决这个问题,给fd分配缓存,

并通过配置来指定每个规则用的缓存策略是怎么样的,达到性能和安全性的平衡

目前2.0搁浅,有机会也许会继续做下去

别再吹冷风 2021-11-21 03:43:18

Hi @难易 ,谢谢你的回复。仔细看了一下zlog手册(也不是很仔细),如果我没理解错动态路径有两种,一种是转档,一种是根据规则输出到不同的日志文件(如error输出到error.log)。如果是这样,我们是不是可以为一个fd分配一块缓存?

不过我发觉用户自定义输出应该可以解决这个问题,只要单条日志和路径交给用户,用户完全可以自己解决缓存问题。不知我理解对不对。

最后,zlog真的很棒,特别是cat, level和rules三者的设计很优雅,也非常灵活。我现在的项目也不依赖海量的日志,上面的问题没有大影响。

能否归途做我良人 2021-11-17 22:04:06

目前没有缓存,每次在内存中生成单条日志,然后write()到文件中

缓存设计非常困难,因为zlog被设计成处理动态日志文件名,每次写日志的时候,无法假定这次写的日志路径是否和上一次一样。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文