我正在运行吞吐量拓扑来测试性能。 在前两分钟,我获得了平均每秒450k的性能 10分钟后,它降至平均每秒10万次。
可能是什么原因?
答案 0 :(得分:0)
可能有几个原因: 1.检查是否满足您的堆要求,并向工作者JVM提供相同的要求。 通过Linux顶级命令/ GC日志,您可以验证相同。 如果您想增加它,请使用XMX参数。 参数:
-XmsAg -XmxAg -XX:+PrintGCDetails -XX:-PrintGCApplicationStoppedTime -XX:+PrintGCTimeStamps -Xloggc:/tmp/gc.log
巨大的主要GC周期 主要GC周期会花费大量时间并导致应用程序暂停大堆。 阅读此博客以优化相同的内容: https://engineering.linkedin.com/garbage-collection/garbage-collection-optimization-high-throughput-and-low-latency-java-applications
僵尸arraylist / hashmap堵塞你的代码 - 如果无法通过代码审查,请使用jVisualVM或Yourkit等分析器指出这个问题。
检查Storm UI以找出非高效螺栓并相应地调整它们。 此外,根据您的要求,更喜欢具有调整参数的CMS GC。 G1垃圾收集器将为您提供快速的收集周期,最短的应用程序停止时间,但与CMS相比,将显示爆炸的进程内存。 首选G1,以防您不必考虑更大的流程大小(与堆大小相比要大得多)。