2014-03-14 45 views
1

。緩存堆大小遠高於100GB。我發現,當我們將數據放入gemfire緩存中時,它會將數據序列化併發送到服務器,並在服務器上以串行化的形式存儲數據。 問題:的GemFire自定義序列沒有幫助

  1. 當我嘗試執行任何服務器上的函數調用,它就啓動反序列化的數據,這是真的費時,有時需要一個多小時只是通過在高速緩存中的對象迭代。 (對象數量接近600萬)。
  2. 我嘗試使用的GemFire自定義序列化(DataSerializer類)。所有數據在緩存中後所花費的內存大小約爲60GB,如果我使用Java默認序列化,則內存大小相同。
  3. 我試圖用一種叫做KRYO https://github.com/EsotericSoftware/kryo圖書館,它有很大幫助,但我仍然不明白爲什麼系列化的GemFire不幫我,我單獨序列化類的每個屬性,所以不應該有任何編寫類頭和任何其他元數據的負擔。

任何幫助將非常感激。

+1

@JasonC校正的拼寫錯誤更高性能的。 –

回答

1

有你看着使用服務器cache.xml的read-serialized=true選項?將此屬性設置爲true將允許服務器對緩存對象執行操作,而無需首先進行反序列化。在Pivotal documentation中閱讀更多關於它的信息。

+0

我想你正在談論PDX自動序列化。該選項在Gemfire 6.5版本中不可用。所以我無法設置'read-serialized = true'選項。 –

0

維韋克,

如果物體的尺寸過大,這將有助於使用的GemFire https://pubs.vmware.com/vfabric5/index.jsp?topic=/com.vmware.vfabric.gemfire.6.6/getting_started/quickstart_examples/delta_propagation.html

三角洲繁殖特徵這還是有一定的序列化/反序列化成本,但不同的是從客戶端,你只會將「對象發生了什麼變化」發送到服務器上,理論上講,如果你在客戶端註冊了興趣列表,這就是複製到其他服務器和客戶端的東西。

我們還發現,在客戶端高速緩存正常PUT比使用功能執行(onRegion或onServers等)