2013-07-22 5 views
21

मेरे पास एक छोटा अक्का एप्लिकेशन है जो अपने कलाकारों के बीच कई संदेश पास करता है और प्रत्येक अभिनेता जो डेटा प्राप्त करता है उस पर कुछ गणना करता है। मैं चाहता हूं कि इस एप्लिकेशन को प्रोफाइल करने के लिए यह देखने के लिए कि कोड के कौन से हिस्से अधिकतर समय लेते हैं और इसी तरह।Akka आवेदन कैसे करें?

मैंने विजुअलVM की कोशिश की लेकिन मैं वास्तव में समझ नहीं पा रहा हूं कि क्या हो रहा है। मैंने प्रोफाइलर आउटपुट की एक तस्वीर जोड़ा।

मेरे सवालों का

  • उदाहरण के लिए क्या यह पहली पंक्ति है कर रहे हैं और क्यों यह इतना समय तक का समय लग जाता है? (scala.concurrent.forkjoin.ForkJoinPool.scan())
  • क्या अक्का अनुप्रयोगों को उनके असीमित व्यवहार की वजह से अच्छी तरह से प्रोफाइल किया जा सकता है?
  • क्या मैं उदाहरण के लिए देख सकता हूं कि एक विशिष्ट अभिनेता (-प्रकार) एक विशिष्ट संदेश (-प्रकार) के लिए कितना समय तक काम करता है?
  • क्या अक्का अनुप्रयोगों की प्रोफाइलिंग के लिए अन्य सर्वोत्तम अभ्यास हैं?

Profiler

उत्तर

13
  • ऐसे पैकेज हैं जो डिफ़ॉल्ट रूप से प्रोफाइल नहीं होते हैं और यह उनका समय है जो scala.concurrent.forkjoin.ForkJoinPool.scan() की प्रोफ़ाइल में जिम्मेदार है। यदि सभी छिपे हुए पैकेजों को नमूना करने की अनुमति है, तो वास्तविक CPU समय उपभोक्ताओं को प्रकट किया जाएगा। उदाहरण के लिए, चित्रकारी प्रोफाइल से पहले/बाद में निम्नलिखित बताते हैं कि sun.misc.Unsafe.park द्वारा थ्रेड को अधिकतर समय तक सोया जाता है, जो बिना रुकावट की प्रतीक्षा कर रहा है। beforeafter
  • अक्का अनुप्रयोगों को उचित उपकरण और कॉल ट्रेसिंग के साथ काफी अच्छी तरह से प्रोफाइल किया जा सकता है। Google के प्रमुख Dapper, a Large-Scale Distributed Systems Tracing Infrastructure पेपर में तकनीक का विस्तृत विवरण शामिल है। ट्विटर ने उस पर आधारित Zipkin बनाया। यह खुला सोर्स है और extension for distributed tracing of Akka है। इसके wiki कैसे एक प्रणाली है कि

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

    वहाँ भी ब्लॉक, Kamon पर एक नया बच्चा है। यह JVM के शीर्ष पर चलने वाले अनुप्रयोगों की निगरानी के लिए एक प्रतिक्रियाशील-अनुकूल टूलकिट है, जो विशेष रूप से टाइपएफ़ रिएक्टिव प्लेटफार्म के साथ बनाए गए अनुप्रयोगों के लिए उत्साहित है। यह निश्चित रूप से अक्का के लिए हाँ का अर्थ है और एकीकरण kamon-akka और kamon-akka-remote मॉड्यूल बाईटकोड उपकरण लाने मेट्रिक्स इकट्ठा होते हैं और अपनी ओर से स्वत: पता लगाने संदर्भ प्रचार प्रदर्शन करने के लिए के रूप में आता है।Akka Integration Overview से शुरू होने वाले दस्तावेज़ों का अन्वेषण करें ताकि यह समझ सके कि यह क्या हो सकता है और इसे कैसे प्राप्त किया जाए।

7

बस कुछ दिनों के पहले typesafe announced कि TypeSafe console अब स्वतंत्र है। मुझे नहीं पता कि स्कैला/अक्का अनुप्रयोगों के प्रोफाइल के लिए बेहतर क्या हो सकता है। कारण से आप JVM भाषाओं के लिए JProfiler आज़मा सकते हैं, मैंने इसे जावा प्रोजेक्ट्स के साथ उपयोग किया है, लेकिन यह मुफ्त और जावा के लिए नहीं है।

+4

दुर्भाग्य से टाइपएफ़ कंसोल प्रोजेक्ट बंद हो गया है: https://groups.google.com/forum/#!forum/typesafe-console – Sonson123

5

मैं कोड में रूपरेखा/मीट्रिक के बारे में सोच रहा था के बाद से मैं भी अक्का/स्काला उत्पादन अनुप्रयोगों के निर्माण के लिए एक बहुत का उपयोग करें, लेकिन मुझे यकीन है कि आवेदन स्वस्थ है बनाने के लिए वैकल्पिक तरीकों को सुनने के लिए भी उत्सुक।

  1. Metrics (like Dropwizard)

मैट्रिक्स Graphite के लिए अच्छा documentation और एम्बेडेड समर्थन के साथ, कोड में इकट्ठा करने के लिए बहुत अच्छा उपकरण, Ganglia, Logback, आदि

यह in- इकट्ठा करने के लिए वर्बोज़ उपकरण है गेज, काउंटर हिस्टोग्राम, समय जैसे ऐप आंकड़े - यह पता लगाने के लिए जानकारी कि आपके ऐप की वर्तमान स्थिति क्या है, कितने अभिनेता बनाए गए थे, आदि, यदि वे जीवित हैं, तो मौजूदा राज्य क्या अधिकांश अभिनेताओं का है, आदि

सहमत हैं, यह प्रोफाइलिंग से थोड़ा अलग है लेकिन समस्या की जड़ें खोजने में बहुत मदद करता है, खासकर अगर कुछ चार भवन उपकरण के साथ एकीकृत किया जाता है।

  1. Profilers like (VisualVM, XRebel)

जब से मैं निगरानी करने का एक बड़ा मज़ा कर रहा हूँ, यह अभी भी एक अलग सवाल का जवाब - अभी क्या अपने आवेदन की वर्तमान अंतर्दृष्टि कर रहे हैं? लेकिन एक और मामला हमें परेशान कर सकता है - मेरा कोड धीमा (या मैला) क्या है?

इसी कारण से, हमारे पास VisualVM और इस प्रश्न के अन्य उत्तर हैं - कैसे VisualVM के साथ Akka अभिनेताओं को प्रोफ़ाइल करने के लिए।

इसके अलावा, मैं XRebel प्रोफाइलर को आजमाने का सुझाव देना चाहता हूं जो यह पता लगाने की प्रक्रिया के लिए थोड़ा अधिक अग्निशक्ति जोड़ता है कि कौन सा कोड ऐप धीमा कर देता है। यह भी भुगतान किया जाता है लेकिन मेरी परियोजना पर यह मैला कोड से निपटने में काफी समय बचाता है।

  1. New Relic

मैं कुछ परियोजनाओं के लिए खेल का मैदान यह सुझाव देंगे जब से तुम/कुछ निगरानी प्राप्त कर सकते हैं मुक्त करने के लिए समाधान की रूपरेखा है, लेकिन और अधिक गंभीर परियोजनाओं पर मैं जाना चाहते हैं उन चीज़ों के लिए जिन्हें मैंने ऊपर हाइलाइट किया था।

तो मुझे उम्मीद है कि मेरा अवलोकन उपयोगी था।

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