मैं webservice एंडपॉइंट प्रदर्शन और आंतरिक सेवा और दाओ कक्षा प्रदर्शन की निगरानी के लिए Per4j का उपयोग कर रहा हूं।
मैं मुख्य रूप से कच्चे प्रदर्शन आंकड़ों को दैनिक रोलिंग फ़ाइल में लॉग करता हूं। फिर मैं अलग-अलग टाइमलाइसेस के साथ डेटा का विश्लेषण करने के लिए कमांड लाइन पर जार का उपयोग करता हूं। मैं अक्सर एक HTML फ़ाइल आउटपुट करने के लिए -g
कमांडलाइन विकल्प का उपयोग करता हूं जिसे मैं खोल सकता हूं और डेटा को दृष्टि से देख सकता हूं जो वास्तव में उपयोगी है।
मुझे @Profiled
एनोटेशन के साथ स्प्रिंग एओपी का उपयोग करने का आनंद मिलता है। यह समय बहुत साफ बनाता है। मेरे पास perf4j अपमानजनक प्रदर्शन के संबंध में कुछ संदेह थे, और मैं आसानी से पेशकश कर सकता था कि मैं अपने स्प्रिंग एप्लिकेशन Context.xml फ़ाइल से TimingAspect
को हटाकर लॉगिंग बंद कर सकता हूं।
<!-- just remove and all uses of @Profiled do nothing -->
<bean id="timingAspect" class="org.perf4j.log4j.aop.TimingAspect"/>
औसत मूल्य के बारे में समृद्ध और अधिकतम मूल्य को नोट करें। प्रदर्शन ट्यूनिंग करते समय, हमारे पास एक मानक मानक विचलन के साथ जंगली मूल्य वाले एक विधि कॉल था। अधिकांश मूल्य औसत के आसपास थे, हालांकि कॉल की एक छिड़काव औसत से 100x अधिक थी। किसी भी चीज़ से अधिक उपयोगकर्ता त्रुटि, लेकिन बाहर देखो।
मैं 15000 के टाइम्सलाइस के साथ AsyncCoalescingStatisticsAppender
का उपयोग करता हूं, लेकिन शायद ही लॉग को पढ़ता हूं। चूंकि मेरे पास कच्चे प्रदर्शन लॉग हैं, इसलिए मैं कमांड लाइन पर perf4j चलाकर इसे काट और बदल सकता हूं।
मैंने जेएमएक्स एकीकरण की कोशिश की और यह दस्तावेज़ीकरण से वादा किया गया है। लेकिन इसके लिए इस समय मेरे पास कोई वास्तविक उपयोग नहीं है।
मेरे पास एसएनएमपी का उपयोग करके डेटा का खुलासा करने की योजना है और यदि यह उपयोगी है तो मैं योगदान दूंगा।
कुल मिलाकर, मैं Perf4j की अनुशंसा करता हूं।
Perf4J में आया है लेकिन कभी कोशिश नहीं की है इसलिए भी इसमें दिलचस्पी होगी। – Mark