2016-09-16 10 views
7

की आवश्यकता होने पर अधिक कनेक्शन का उपयोग नहीं करते हैं, मैं समझने की कोशिश कर रहा हूं कि स्लिम-हिकारी कैसे काम करती है, मैंने बहुत सारे दस्तावेज पढ़े हैं लेकिन मेरे पास एक ऐसा केस है जिसका व्यवहार मैं समझ नहीं पा रहा हूं।हिकारी के साथ स्लिम

मैं डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ, हिकारी के साथ स्लिम 3 का उपयोग कर रहा हूं। मेरे पास पहले से ही ~ 1000 उपयोगकर्ताओं के साथ एक उत्पादन ऐप है जो एक साथ जुड़ा हुआ है। मेरा ऐप websockets के साथ काम करता है और जब मैं एक नई रिलीज तैनात करता हूं तो सभी क्लाइंट पुनः कनेक्ट होते हैं। (मुझे पता है कि यह तैनाती को संभालने का सबसे अच्छा तरीका नहीं है लेकिन मुझे इस समय क्लस्टरिंग नहीं है।) जब ये सभी उपयोगकर्ता पुन: कनेक्ट होते हैं, तो वे सभी अपने उपयोगकर्ता राज्य (कुत्ते-ढेर प्रभाव) प्राप्त करने के लिए प्रश्न पूछना शुरू करते हैं। जब यह स्लिक शुरू होता है होता है की तरह त्रुटियों का एक बहुत फेंक:

java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Running, pool size = 20, active threads = 20, queued tasks = 1000, completed tasks = 23740] 

क्या मुझे लगता है कि यह हो रहा है कि लंबित प्रश्नों के लिए चालाक कतार क्योंकि यह सभी ग्राहकों के डाटाबेस से जानकारी का अनुरोध नहीं संभाल सकता है भरा हुआ है।

Example of Observed Dropwizard Metrics

16:45 के पास हम एक तैनाती से: लेकिन अगर मैं मीट्रिक देखने Dropwizard मुझे मैं निम्न देखें प्रावधान है कि। जब तक पुराना उदाहरण समाप्त नहीं होता है, हम देख सकते हैं कि कनेक्शन की संख्या 20 से 40 हो जाती है। मुझे लगता है कि यह सामान्य है, यह देखते हुए कि तैनाती प्रक्रिया कैसे की जाती है।

लेकिन, यदि कुत्ते की ढेर प्रभाव की वजह से स्लिम की क्वेरी कतार पूर्ण हो जाती है, तो यह 20 कनेक्शन से अधिक कनेक्शन का उपयोग क्यों नहीं कर रहा है यदि इसमें 20 कनेक्शन उपलब्ध हैं? डेटाबेस वास्तव में अच्छा प्रदर्शन कर रहा है, इसलिए मुझे लगता है कि बाधा स्लिम में है।

क्या आपके पास इस तैनाती प्रक्रिया में सुधार के लिए कोई सलाह है? मेरे पास अब केवल 1000 उपयोगकर्ता हैं, लेकिन मेरे पास कुछ हफ्तों में बहुत कुछ होगा।

+0

हो सकता है कि एक धागा दिखा रहे हैं, जहां उन 20 माना जाता है कि "सक्रिय" ThreadPoolExecutor में धागे के सभी मदद मिलेगी डंप संलग्न? क्या वे हिकारीसीपी पर अवरुद्ध हैं? क्या वे किसी और चीज पर अवरुद्ध हैं? इसके अलावा, स्लिम और हिकारीसीपी का कौन सा संस्करण (बिल्कुल)? – brettw

+0

क्या इससे मदद मिलती है http://stackoverflow.com/questions/29897003/slick-3-0-rc3-fails-with-java-util-concurrent-rejectedexecutionexception? – brettw

+0

स्लिम और हिकारीसीपी का कौन सा संस्करण? मुझे पता है कि पिछले कुछ महीनों में समेकन बढ़ाने की कोशिश में स्लिम ने कुछ बदलाव किए हैं ... – brettw

उत्तर

0

"अस्वीकार" अपवाद के आधार पर, मुझे लगता है कि कई स्लिम कार्रवाइयों को एक साथ slick करने के लिए सबमिट किया गया था, जो स्लिक में एम्बेडेड कतार के डिफ़ॉल्ट आकार (1000) से अधिक था।

तो मुझे लगता है आपको:

  1. वृद्धि कतार आकार (queueSize) अधिक असंसाधित कार्यों धारण करने के लिए।
  2. समसामयिक रूप से अधिक क्रियाओं को संसाधित करने के लिए थ्रेड (numThreads) की संख्या में वृद्धि करें। You can get more tips here
संबंधित मुद्दे