【发布时间】:2016-02-09 14:55:57
【问题描述】:
我将日志存储到 StringBuilder Object 中。几乎有 214873 行正在被存储。每次代码发现错误时,错误消息都会存储在 StringBuilder 对象中,并附加到下一个错误等等。
最后当所有的错误信息都被记录下来时。 StringBuilder 对象中的行被写入 hdfs。我面临的问题是,将完整的错误消息存储到 StringBuilder 对象中需要 6 个小时。有什么方法可以减少存储时间,以便在生产集群中运行 code fatser?
提前致谢。
【问题讨论】:
-
你为什么要那样做?
-
只是因为在这种情况下我不能使用记录器。我们的集群中没有 log4j 设置。
-
我认为您需要更好地解释一下背景,因为您根本不清楚为什么要将日志条目存储在所有位置的内存中,更不用说巨大的字符串了。跨度>
-
您的日志消息有多长?你的进程消耗了多少内存,机器有多少?您是否考虑将消息写入临时文件?
-
不要将所有邮件存储在
StringBuilder中。即使您不想正确设置日志记录,您也可以存储一个字符串列表而不是一个庞大的StringBuilder。
标签: java string hadoop hdfs stringbuilder