2016-08-15 35 views
0

我最近開始使用Apache Storm。目前,我的工作重點是針對某個應用程序進行性能測試和調優(將數據從NoSQL數據庫中提取出來,格式化併發布到供請求者使用的JMS隊列中),以便一次啓用更多的並行請求處理。我已經能夠根據改變編號來調整拓撲結構。 MAX_SPENDING_SPOUT等,並使用一些滴答法來限制拓撲結構內的數據流。Storm Cluster中更多執行程序比CPU /內核的影響

我想知道當我們定義更多的並行性而不是我們擁有的核心時會發生什麼。在我的情況下,我有一個節點,單個工作者拓撲,並且該機器有32個內核。但總量不執行者(對於所有出水口和螺栓)= 60。所以我的問題是:

  1. 這是否大量真正幫助處理請求或者是它實際上降低了性能,因爲我相信會有更多的上下文在螺栓任務之間切換以利用核心。

  2. 如果我爲Bolt和我的代碼流定義20個(只是一個隨機選擇)執行程序,則永遠不需要使用Bolt,這會影響性能嗎?風暴如何處理這種情況?

回答

0

這是一個非常普遍的問題,所以答案是(一如既往):這取決於。

如果你的負載很大,並且一個執行器完全完全利用了一個內核,那麼擁有更多的執行器不能爲你提供任何吞吐量改進。如果有任何影響,它可能是負面的(也涉及所有執行者需要讀取和寫入元組傳輸的內部使用隊列的爭用)。

如果你加載的是「小」,並沒有充分利用你的CPU,它的傷口要麼 - 你不會獲得或放鬆任何東西 - 因爲你的核心沒有得到充分利用,你仍然有一些遺留在頭頂空間。

此外,請考慮Storm在每個工作人員中跨越一些線程。因此,如果您的執行者充分利用您的硬件,那些線程也將受到影響。總的來說,你不應該運行你的拓撲來完全利用核心,而是留下小小的「尖峯」等空間。在操作中,可能80%的CPU利用率可能是一個很好的價值。作爲一個經驗法則,每個核心執行者應該沒問題。

相關問題