2017-02-23 41 views
0

我沒有得到我期望使用Apache Ignite DataGrid的性能。我嘗試了一些配置更改,但此時不知道如何調查性能瓶頸,並且正在尋求專家幫助。Apache Ignite緩存放置並得到緩慢

我正在使用Apache Ignite來緩存使用包裝類的字節數組,我調用ByteArray。我的測試代碼嘗試通過調用多個投入並基於多個來自另一個進程的基準來測試緩存性能。我試過在同一個節點和不同節點上運行get過程。我還創建了一個使用Java HashMap作爲緩存的基準性能規格,這具有更好的性能(Put爲10000x)。

現在,在同一個節點上,我得到以下內容: Hashmap緩存,同一個節點:放2600 MB/s;獲得300 MB /秒 點燃相同的節點緩存:將0.4 MB /秒;得到2.0 MB /秒 點燃緩存,2個節點:放0.3 MB /秒;得到0.7 MB/s

我在複製模式下運行這些,但我看到類似的分區模式的結果。我運行多次測試並平均時間。我的節點有25GB內存,我的測試消耗約1GB。我已經配置VM使用最大10GB。

在此先感謝您對此問題的任何見解。

回答

1

首先,將Ignite性能與HashMap進行比較並沒有多大意義。 Ignite是一個分佈式和可擴展的系統,而HashMap甚至不是線程安全的。

事實上,您使用HashMap作爲基線,這讓我認爲您的測試是單線程的。如果您嘗試從多個線程/客戶端查詢Ignite,我相信您會注意到更好的吞吐量。

另請注意,使用Ignite意味着通過網絡發送數據。速度受到限制。

+0

我明白你在說什麼線程和Ignite的分佈式特性,但我創建了'HashMap'的例子,純粹是爲了在我的節點上獲得原始性能(並在我的基準代碼中發現錯誤)。 Ignite計時有2個客戶端(同一節點和2個節點的情況),這是我得到低性能的地方。我想知道我是否正確使用Ignite。我的需要是在N個節點上進行一系列放置,然後在這些節點上進行。 Ignite是否是正確的工具,我能期待MB/s的性能如何? – Sumit

+0

就是這一點。您正在比較本地非線程安全映射與暗示網絡通信的分佈式集羣。這是絕對無效的比較。無論您做什麼,都應該儘量減少通過網絡傳輸的數據量,例如通過使用親和力搭配:https://apacheignite.readme.io/docs/affinity-collocation。至於確切的吞吐量數字,幾乎沒有限制,因爲可以通過添加更多節點來擴展Ignite。 –

相關問題