2017-05-29 48 views
1

在我的地圖中有3個對象存儲 - 每個MB有幾個MB。它們不會改變,所以在節點本地緩存它們是有意義的。在我意識到平均獲取延遲很大並且大大減慢我的計算速度之前,這就是我以前做的事。看到hazelcast控制檯:靠近緩存的Hazelcast - 巨大的延遲

Hazelcast console view

這使我的幻想世界裏,沒有從獲得。起初我認爲是90和48次失誤嗎?計算是並行運行的,所以我認爲它們都可以發佈一個請求,以便在條目被緩存之前獲得,因此所有這些在這一點上都不會從近緩存獲益。這是否是一些預加載方法,以便在觸發所有這些並行任務之前運行它?順便說一句。爲什麼入口內存爲0,即使在臨近緩存數據表中有條目?

這裏是我的地圖配置:

<map name="commons"> 

     <in-memory-format>BINARY</in-memory-format> 

     <backup-count>0</backup-count> 
     <async-backup-count>0</async-backup-count> 
     <eviction-policy>NONE</eviction-policy> 

     <near-cache> 

      <in-memory-format>OBJECT</in-memory-format> 
      <max-size>0</max-size> 
      <time-to-live-seconds>0</time-to-live-seconds> 
      <max-idle-seconds>0</max-idle-seconds> 
      <eviction-policy>NONE</eviction-policy> 
      <invalidate-on-change>true</invalidate-on-change> 
      <cache-local-entries>true</cache-local-entries> 
     </near-cache> 
    </map> 

實際的問題是,爲什麼在近緩存這麼多的失誤,併爲它放在那龐大的平均等待時間獲取可能來自哪裏?

+0

我實際上不知道我得到了問題,但入口內存爲0,因爲您使用「In-Memory-Object :: Object」,這意味着我們無法計算內存消耗。你能否重申一下實際的問題? – noctarius

+0

您是使用客戶端還是僅使用這2臺服務器?如果是後者,您是否嘗試將'backup-count'設置爲1並將'read-from-backup'設置爲true。 –

+0

我正在使用多個服務器和一個客戶端應用程序。客戶端應用程序不會多次獲取這些值(以設置它們)。我無法真正使用備份計數,因爲節點數可能會有所不同,並且此值不能設置爲超過6 ... – kboom

回答

2

管理中心顯示的延遲是請求到達服務器後的延遲。如果你有一個NearCache並且你打到NearCache,那麼它不會顯示在Man.Center上。我懷疑你不應該觀察你應用程序的高延遲。我看到有34場比賽。我假設這個條目已經更新。當一個條目被更新時,它被從NearCache中逐出。隨後的讀取將打到服務器。

+0

兩個條目永遠不會從開始更新,而是一個在運行過程中添加,但也永不更改。儘管你說的仍然是有道理的,爲什麼會有這麼多的錯失? – kboom

+0

從遠處說真的很難說。 –