2014-06-26 89 views
1

我正在運行吞吐量拓撲以測試性能。 在開始的兩分鐘內,我獲得了平均每秒450k的平均每秒450k發射率 ,並在10分鐘後平均達到100k每秒。爲什麼風暴表演在幾分鐘後變得非常緩慢?

可能是什麼原因?

吞吐量測試: https://github.com/stormprocessor/storm-benchmark/blob/master/src/jvm/storm/benchmark/ThroughputTest.java

+4

這對你的分析器來說確實是一個問題。 –

+0

你爲什麼將ackers設置爲0? – bridiver

+0

創建大量隨機字符串後,它是否進入長/頻繁的GC暫停? – Suchet

回答

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。

    相關問題