测试zlog写入速度,对短日志不利
zlog使用手册提到25万条日志每秒的速度,我实测了一下,结果比标称还要好,可以达到50万条每秒。
这个速度和单条日志长度无关,我尝试了32字节、64字节、和128字节的日志长度,发现都在50万条每秒左右。这样短日志的吞吐量就不如长日志。我猜测这是磁盘IO次数所限?zlog有没有手段缓存日志来减少IO次数(例如,每2M写一次磁盘),从而提升短日志的吞吐量?
我看到有buffer min和buffer max的设置,但手册提到这是为单条日志设计的,不是很理解其中目的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
帮宏哥测测宏哥日志系统:
很高兴你喜欢zlog,
前段时间想写zlog 2.0就是想解决这个问题,给fd分配缓存,
并通过配置来指定每个规则用的缓存策略是怎么样的,达到性能和安全性的平衡
目前2.0搁浅,有机会也许会继续做下去
Hi @难易 ,谢谢你的回复。仔细看了一下zlog手册(也不是很仔细),如果我没理解错动态路径有两种,一种是转档,一种是根据规则输出到不同的日志文件(如error输出到error.log)。如果是这样,我们是不是可以为一个fd分配一块缓存?
不过我发觉用户自定义输出应该可以解决这个问题,只要单条日志和路径交给用户,用户完全可以自己解决缓存问题。不知我理解对不对。
最后,zlog真的很棒,特别是cat, level和rules三者的设计很优雅,也非常灵活。我现在的项目也不依赖海量的日志,上面的问题没有大影响。
目前没有缓存,每次在内存中生成单条日志,然后write()到文件中
缓存设计非常困难,因为zlog被设计成处理动态日志文件名,每次写日志的时候,无法假定这次写的日志路径是否和上一次一样。