office工作日志文件
在过去的三个月中,我正在与一个新团队合作,为电信领域的大数据分析构建产品。
Storm事件处理器是我们使用的主要框架之一,它确实很棒。 您可以阅读其官方文档中的更多详细信息(已改进)。
Storm使用Workers来完成您的工作,其中每个人都是一个JVM,并由Storm内部管理(启动,如果无响应则重新启动,将Worker移至群集的另一个节点等)。 对于单个作业,您可以在集群上运行许多Worker(Storm决定如何在集群节点中分配Worker)。 作为“节点”,我指的是正在运行的操作系统,可以在VM或物理机上运行。
这里的棘手点是,即使节点中的所有Worker正在运行/处理其他类型的作业,它们都读取相同的配置文件(STORM_HOME / conf / storm.yaml )。 此外,有一个单一的参数(worker.childopts)在此文件中,其用于所有工人(在同一节点的)来初始化他们的JVM(如何设置JVM选项)。
因为我们想知道GC在每个worker中的性能,我们需要监视每个Worker / JVM的GC日志。
就像我说的那样,问题在于,当一个节点中的所有Worker都从同一配置文件中读取相同的参数以初始化其JVM时,因此为每个Worker / JVM使用不同的GC日志记录文件并不是一件容易的事。
幸运的是,Storm开发人员公开了解决该问题的“ 变量 ”。 该变量名为“ ID ”,并且对于每个节点上的每个Worker都是唯一的(相同的Worker ID可以存在于不同的节点中)。
对于Workers JVM Options,我们在“ storm.yaml ”文件中使用以下条目:
worker.childopts: "-Xmx1024m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:/opt/storm/logs/gc-storm-worker-%ID%.log"
请注意,您必须在“ ID ”字符串之前和之后添加“ % ”(以便被标识为内部Storm变量)。
另外,对于Supervisor JVM选项(每个节点上有一个进程),我们在“ storm.yaml ”文件中使用以下条目:
supervisor.childopts: "-Xmx512m -XX:MaxPermSize=256m -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbose:gc -Xloggc:/opt/storm/logs/gc-storm-supervisor.log"
我也包括了一种内存设置(“ -Xmx”和“ -XX:MaxPermSize”),但这只是一个例子。
请记住,Storm需要Oracle Hotspot JDK 6 (尚不支持JDK 7/8)。 这是一个严重的缺点,但我们希望它会尽快解决。
希望能帮助到你!
民主需要免费软件
翻译自: https://www.javacodegeeks.com/2014/04/storm-event-processor-gc-log-file-per-worker.html
office工作日志文件