Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging Erlang大容量日志记录_Logging_Erlang_High Load - Fatal编程技术网

Logging Erlang大容量日志记录

Logging Erlang大容量日志记录,logging,erlang,high-load,Logging,Erlang,High Load,对于我的erlang应用程序,我同时使用了sasl logger和log4erl,当发送到它们的事件数大约为每秒1000个时,它们的性能都很差。log4erl提供了更好的性能,但一段时间后,它的邮箱开始填满,从而开始膨胀VM。 使用disk_log是否是一个更好的选择(例如,它是否可以在每秒1000个事件的负载下工作?)。 我尝试在shell上使用磁盘日志。。。在本例中,他们首先将要记录的消息转换为二进制(list_to_binary),然后使用“blog”函数写入文件。 这样做能帮助

对于我的erlang应用程序,我同时使用了sasl logger和log4erl,当发送到它们的事件数大约为每秒1000个时,它们的性能都很差。log4erl提供了更好的性能,但一段时间后,它的邮箱开始填满,从而开始膨胀VM。

使用disk_log是否是一个更好的选择(例如,它是否可以在每秒1000个事件的负载下工作?)。 我尝试在shell上使用磁盘日志。。。在本例中,他们首先将要记录的消息转换为二进制(list_to_binary),然后使用“blog”函数写入文件。

这样做能帮助我使用高效的大容量记录器吗?

还有一个疑问:
使用disk_log:blog时,文本的大小只有84字节……但使用disk_log:log_术语时,文本的大小是970字节……为什么会有这么大的差异?
自己动手做点什么。具有内存存储和磁盘大容量转储功能的专用记录器是最快的解决方案。如果您无法承受任何数据丢失(在VM崩溃的情况下),请在远程节点上执行此操作。有一次,我使用远程“解决方案”,每5秒查询一次目标VM。我没有注意到对系统的影响

在大容量日志记录方面,我更喜欢经过战斗测试的解决方案,如scribe或flume。检查。

Erlang的IO库可以处理列表和二进制文件(以及两者的混合)。您不需要转换最终将要转到端口的任何内容。但是,库API可能出于任何原因需要它。使用disk\u log:blog时,文本的大小只有84字节…但使用disk\u log:log\u术语时,文本的大小为970字节..为什么会有这么大的差异?问题可能是您将记录器用作跟踪程序。SASL的开销特别大。@user425720::现在我使用的是带有“内部格式”的磁盘日志,它将以二进制格式转储日志,我将解析它。继续…我将在一个将继续运行的进程中打开磁盘日志,我将把日志的名称传递给所有需要日志记录的进程。考虑到磁盘日志有一些所有者和匿名的概念,这是正确的方法吗。@ArunMu说实话,我没有认真使用磁盘日志。你的方案听起来不错。通常有记录器守护进程并向其传递ref。我没有使用磁盘日志,因为磁盘上的二进制格式根本不方便。是的,但要注意的DEP列表很重要。日志记录似乎很容易。但根据经验,我可以说,这将成为一个沉重的负担,甚至是当您获得高容量时的瓶颈。在分布式环境中消化日志也会成为一个问题(当您抛出2个erlang节点以获得更多并发性时)。Scribe和Flume都针对这类问题进行了调整。更多与节俭和所有相关的功能:(