Erlang 高容量日志记录
对于我的 erlang 应用程序,我使用了 sasl logger 和 log4erl,当发送给它们的事件数量约为每秒 1000 个时,两者的性能都很差。 log4erl 提供了更好的性能,但一段时间后其邮箱开始填满,从而开始使虚拟机膨胀。
使用 disk_log 是否是一个更好的选择(例如它可以在每秒 1000 个事件的负载下工作吗?)。
我尝试在 shell 上使用 disk_log ...在示例中,他们首先将要记录的消息转换为二进制(list_to_binary)并使用“blog”功能写入文件。
这样做会帮助我使用高效的大容量记录器吗?
还有一个疑问:: 使用disk_log:blog 文本的大小仅为84 字节...但使用disk_log:log_terms..大小为970 字节..为什么有这么大的差异?
For my erlang application, I have used both sasl logger and log4erl and both are giving poor performance when the number of events sending to them is around 1000 per second. log4erl was giving better performance but after some time its mailbox starts filling up and thus starts bloating the VM.
Will using disk_log be a better option (as in will it work under 1000 events per sec load ?).
I tried using disk_log on the shell... in the example they are converting the message to be logged to binary (list_to_binary) first and writing to file using "blog" function.
Would doing like this help me in using an efficient high volume logger ?
One more doubt::
Using disk_log:blog the size of the text was just 84 bytes...but with disk_log:log_terms..the size was 970 bytes..why such a big difference ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
自己破解一些东西。具有内存存储和批量转储到磁盘的专用记录器是最快的解决方案。如果您无法承受丢失任何数据(在虚拟机崩溃的情况下),请在远程节点上执行此操作。一旦我使用远程“解决方案”,我就会每隔 5 秒查询一次目标虚拟机。我没有注意到对系统的影响。
Hack something on your own. Dedicated logger with in-memory storage and bulk dumps to disc is the fastest solution. If you cannot afford losing any data (in case of VM crash), do it on remote node. Once I used the remote 'solution' and I queried every 5sec target VM. I didn't notice impact on the system.
在大容量日志记录中,我更喜欢经过实际测试的解决方案,例如 scribe 或 Flume。检查 erl_scribe 。
On high volume logging I prefer battle tested solutions like scribe or maybe flume. Check erl_scribe .