2009-04-25 16 views
9

मैं सिर्फ एक महीने पहले इसे खोजने के बाद टेराकोटा का उपयोग करने के बारे में सीख रहा हूं। यह एक बहुत अच्छी तकनीक है।टेराकोटा प्रदर्शन और टिप्स

असल में मैं क्या करने की कोशिश कर रहा हूँ:

मेरे रूट (रिकार्ड की प्रणाली) एक ConcurrentHashMap है।

मुख्य उपकरण कक्षा 30 या ऐसे क्षेत्रों के साथ "जावाबीन" है जो मैं हैश मैप में मौजूद होना चाहता हूं।

हैशमैप में मौजूद इनमें से 20000 वेबबीन होंगे।

प्रत्येक बीन में (कम से कम) 5 फ़ील्ड हैं जो हर 5 सेकंड में अपडेट किए जाएंगे।

(क्योंकि ये JavaBeans JVMs और नोड्स भर में सुलभ होने की जरूरत कारण मैं इस के लिए टेराकोटा का उपयोग कर रहा है।)

साथ टीसी मुझसे अधिक अनुभव के साथ किसी को भी कोई सुझाव? प्रदर्शन कुंजी है।

कोई अन्य उदाहरण अन्य समान अनुप्रयोग?

उत्तर

7

आप एक ताला दायरे में है कि बैचिंग कई बदलाव हो सकता है बेहतर प्रदर्शन करेगा। प्रत्येक सिंक्रनाइज़ ब्लॉक/विधि एक लेखन लेनदेन बनाती है (माना जाता है कि आप एक लिखने वाले लॉक का उपयोग करते हैं) जिसे सर्वर पर भेजा जाना चाहिए (और संभवतः अन्य नोड्स पर वापस जाना)। फ़ील्ड का एक गुच्छा बदलकर, संभवतः एक ताला के नीचे वस्तुओं के समूह पर, आप लेनदेन बनाने के ऊपरी हिस्से को कम करते हैं। कम से कम खेलने के लिए कुछ।

विभाजन प्रदर्शन में सुधार करने का एक प्रमुख तरीका भी है। परिवर्तन केवल उन ऑब्जेक्ट्स को भेजे जाने की आवश्यकता है जो वास्तव में किसी ऑब्जेक्ट का उपयोग कर रहे हैं। तो यदि आप विभाजन कर सकते हैं कि कौन से नोड्स आमतौर पर विशिष्ट ऑब्जेक्ट्स को स्पर्श करते हैं जो क्लस्टर के आसपास भेजे जाने वाले परिवर्तनों की संख्या को कम कर देता है, जो प्रदर्शन में सुधार करता है।

सीएनएम या सीएसएम का उपयोग करने के बारे में unnutz के सुझाव अच्छे हैं। सीएचएम अधिक समेकन की अनुमति देता है (क्योंकि प्रत्येक आंतरिक खंड को लॉक किया जा सकता है और समवर्ती रूप से उपयोग किया जा सकता है) - बड़े सेगमेंट के साथ प्रयोग करना सुनिश्चित करें। सीएसएम प्रभावी रूप से एक प्रविष्टि प्रति लॉक है इसलिए एन-आकार की तालिका में प्रभावी रूप से एन विभाजन हैं। इससे लॉक विवाद (अधिक आंतरिक लॉक ऑब्जेक्ट्स प्रबंधित करने की लागत पर) बहुत कम हो सकता है। सीएसएम के लिए जल्द ही आने वाले परिवर्तन लॉक एमजीएमटी लागत को बहुत कम कर देंगे।

आम तौर पर हम पाते हैं एक अच्छी रणनीति है:

  1. एक प्रदर्शन परीक्षण का निर्माण (मल्टी-थ्रेडेड और बहु ​​नोड और अपने अनुप्रयोग (या आपके वास्तविक एप्लिकेशन के समान होना चाहिए!)
  2. ऑब्जेक्ट ट्यून करें - उन ऑब्जेक्ट्स को खोजने के लिए देव-कंसोल में अपने क्लस्टर ऑब्जेक्ट ग्राफ़ को देखें, जिन्हें कभी भी क्लस्टर नहीं किया जाना चाहिए - कभी-कभी यह गलती से होता है (क्लस्टर को एक क्षणिक क्षेत्र से हटा दें)। कभी-कभी आप उस तारीख को क्लस्टर कर सकते हैं जहां एक लंबा होगा। छोटे बदलाव, लेकिन प्रति मानचित्र प्रविष्टि की एक वस्तु है और इससे कोई फर्क पड़ सकता है।
  3. ट्यून लॉक - हॉट लॉक या लॉक को खोजने के लिए dev-console में लॉक प्रोफाइलर का उपयोग करें जो बहुत संकीर्ण या बहुत व्यापक हैं। क्लस्टर्ड आंकड़े रिकॉर्डर भी लेनदेन के आकार को देखने में मदद कर सकते हैं।
  4. ट्यून जीसी और डीजीसी - जेवीएम कचरा संग्रह ट्यून करें, फिर टेराकोटा को जीन जीसी जीसी की आवृत्ति को बदलकर जीसी वितरित करें।
  5. ट्यून टीसी सर्वर - यहां बहुत सारे विस्तृत ट्यूनिंग करने के लिए, लेकिन आम तौर पर ऊपर की सामग्री को ट्यून किए जाने तक इसका लायक नहीं है।

Terracotta forums पर भी पूछने के लिए स्वतंत्र महसूस करें - इंजीनियरिंग, फील्ड इंजीनियरिंग, उत्पाद एमजीएमटी उन सभी को देखें और वहां जवाब दें।

3

सबसे पहले, मैं आपको इस मंच को उनके मंचों पर भी उठाने का सुझाव दूंगा।

दूसरा, वास्तव में, टेराकोटा विलल पर क्लस्टर किए गए आपके आवेदन का प्रदर्शन होने वाले लेखन लेनदेन की संख्या पर निर्भर करता है। तो आप ConcurrentStringMap का उपयोग करने पर विचार कर सकते हैं (यदि आपकी चाबियां स्ट्रिंग हैं) या ConcurrentHashMap। ध्यान दें कि सीएसएम प्रदर्शन के बिंदु से सीएचएम से कहीं ज्यादा बेहतर है।

आखिरकार, पीओजेओ आलसी लोड हो गए हैं। इसका मतलब है कि प्रत्येक संपत्ति मांग पर लोड होती है।

उम्मीद है कि मदद करता है।

चीयर्स

संबंधित मुद्दे