2014-06-17 11 views
7

से प्रदर्शन ड्रॉप अपग्रेडिंग Hazelcast 2.5 में ज्ञात (निश्चित) बग के कारण हमने फैसला किया है कि यह हमारी परियोजना के लिए अगली अपग्रेड उम्मीदवार होगा। लेकिन नवीनतम संस्करण (3.2.2) में गिरावट के बाद हमारे पास भयानक प्रदर्शन था।Hazelcast 2.5 से 3+

जिस तरह से हम Hazelcast उपयोग कर रहे हैं:

  • दो नोड्स
  • एकाधिक IMAP उदाहरणों (के बारे में 7 में कुल नक्शे)
  • दोनों नोड्स अद्यतन नक्शे
  • का एक बहुत नक्शे पर पढ़ता
  • पास कैश तेजी लाने के लिए सक्षम पढ़ता

Hazelcast 2.5 का उपयोग करते हुए, map.values() का उपयोग करने के बजाय, हमने बहुत अच्छा प्रदर्शन किया, हमने सभी निहित कुंजी map.getAll(containedKeys) की एक सूची प्रदान की। जिस तरह से हम एक समवर्ती सेट में निहित कीज़ को संग्रहीत करते हैं, उस मानचित्र पर EntryListener जोड़कर निहित कीज़ का ट्रैक रखें। यह एक सहयोगी द्वारा जोड़ा गया था और एक हैक की तरह लगता है, लेकिन एक आकर्षण की तरह काम करता है।

अब जब हम Hazelcast 3.2.2 में नवीनीकृत हम तुरन्त java.io के साथ समस्याओं को देखते हैं, उदाहरण के लिए AppDynamics से निम्नलिखित स्निपेट को देखो:

com.hazelcast.map.proxy.MapProxyImpl:getAll:326 (method time = 0 ms, total time = 18938 ms) 
com.hazelcast.map.proxy.MapProxySupport:getAllObjectInternal:495 (method time = 0 ms, total time = 18938 ms) 
    com.hazelcast.map.MapService:toObject:852 (method time = 0 ms, total time = 18938 ms) 
    com.hazelcast.spi.impl.NodeEngineImpl:toObject:156 (method time = 0 ms, total time = 18938 ms) 
    com.hazelcast.nio.serialization.SerializationServiceImpl:toObject:221 (method time = 0 ms, total time = 18938 ms) 
    com.hazelcast.nio.serialization.StreamSerializerAdapter:read:59 (method time = 0 ms, total time = 18938 ms) 
     com.hazelcast.nio.serialization.DefaultSerializers$ObjectSerializer:read:185 (method time = 0 ms, total time = 18938 ms) 
     java.io.ObjectInputStream:readObject:370 (method time = 3398 ms, total time = 18938 ms) 
     java.io.ObjectInputStream:readObject:370 (method time = 15540 ms, total time = 15540 ms) 

यह कुछ हम Hazelcast 2.5 में नहीं देखा है है, लेकिन 3.2.2 में है। यह हमारे आवेदन को पूरी तरह से स्थिर करने के लिए पीसता है। जार को फिर से 2.5 के साथ बदलना (और एंट्री को वापस मैनेन्ट्री में बदलना) और कुछ भी गलत नहीं है।

इसका कारण क्या हो सकता है? शायद यह अब निकट कैश का उपयोग नहीं कर रहा है?

+0

वहाँ जल्दी से अपने खुद के स्नैपशॉट का निर्माण और यह कोशिश करने का मौका है? मुझे पता है कि पास के पास बग था लेकिन यह सुनिश्चित नहीं है कि यह इस स्थिति पर लागू होता है या नहीं। – noctarius

+0

मैंने पहले से ही इसे पैच किया है: https://github.com/hazelcast/hazelcast/pull/2523 यह लोड क्लास को ठीक करता है लेकिन यह readObject अब बाधा है। कृपया मुझे एक संभावित पैच/दिशा में इंगित करें। –

+1

वैसे जावा मानक क्रमबद्धता हमेशा बाधा होगी। यदि आप उच्च गति चाहते हैं तो इसका उपयोग न करें या कम से कम j.i.Externalizable का उपयोग करें। – noctarius

उत्तर