/ / अक्का संदेश सभी एक बार में रुकते हैं - स्कैला, अक्का

अक्का संदेश सभी एक बार में रुकते हैं - स्कैला, अक्का

मुझे यह हास्यास्पद समस्या है और मैं इस मुद्दे की पहचान करने में असमर्थ हूं।

मेरे पास यह "सरल" अक्का आवेदन है। इसका मुख्य लक्ष्य डेटाबेस में प्रत्येक दस्तावेज़ पर जाना है। मेरा मुख्य अभिनेता एक ऐसे अभिनेता को पंक्तियों का अनुरोध करता है जो डेटाबेस के साथ संचार करता है। प्रत्येक दस्तावेज़ पुनर्प्राप्त किया जाता है, मेरे मुख्य अभिनेता को वापस कर दिया जाता है। बैच द्वारा, ये दस्तावेज एक संदेश में जोड़े जाते हैं एक संतुलन प्रेषक द्वारा प्रबंधित कतार। छोटे कर्मचारी उनके ऊपर जायेंगे और उन्हें सॉर्ट करेंगे।

कुछ घंटों के बाद, आम तौर पर 2 और 4 के बीच, सभी अभिनेता एक ही समय में 5 सेकंड अंतराल तक रुकते हैं।

मैं सोच रहा था कि आप में से प्रत्येक ने कुछ ऐसा ही देखा था।

जानकारी के लिए:

  • मैं अक्का 2.2.0 का उपयोग करता हूं
  • कोई पूछताछ संदेश नहीं उपयोग किया जाता है, केवल बताओ
  • मैं Await जैसे थ्रेड लॉकिंग विधियों का उपयोग नहीं करता हूं
  • डेडलेटर्स कारण हैं कि मुझे पता है कि सबकुछ बस बंद हो जाता है

आपके सहयोग के लिए धन्यवाद


डेडलेटर से ऐसा लगता है कि केवल मेरे संतुलन प्रेषक / मेरे राउंड रॉबिन राउटर से संबंधित अभिनेता बस रुकते हैं। क्या मुझे कुछ याद आएगा?

मेरा स्कला

val workers: ActorRef = context.system.actorOf(
Props(new WorkerActor)
.withRouter(FromConfig())
.withDispatcher("balancing-dispatcher"),
"round-robin"
)

मेरा विन्यास कोड

balancing-dispatcher {
type = BalancingDispatcher
executor = "fork-join-executor"
}

akka.actor.deployment {
/round-robin {
router = round-robin
nr-of-instances = 50
resizer {
lower-bound = 10
upper-bound = 100
}
}
}

उत्तर:

उत्तर № 1 के लिए 1

मैं पहले एक प्रोफाइलिंग उपकरण का उपयोग करता हूं जैसे किस्मृति, जीसी, और / या कांटा + मुद्दों में शामिल होने के लिए jconsole या jvisualvm। क्या आपके पास पर्याप्त ढेर आवंटित है? थ्रेड और थ्रेड स्टेटस की संख्या भी रिकॉर्ड करें (क्या धीमे-डाउन होने पर धागे फोर्क किए जाते हैं या जुड़ जाते हैं?)

यह हो सकता है कि आपको और अधिक कॉन्फ़िगर करने की आवश्यकता होअक्का के धागे पूल में धागे। या आप 100 उदाहरणों की ऊपरी सीमा तक पहुंच गए हैं और वे सभी व्यस्त हैं। आप Resizer गतिविधि की स्पष्ट अधिसूचना / लॉगिंग प्रदान करने के लिए DefaultResizer कार्यान्वयन को उपclass कर सकते हैं और अपने subclass को Resizer के रूप में कॉन्फ़िगर कर सकते हैं।