2009-12-11 18 views
60

के साथ मैं विजुअलVM टूल के साथ टॉमकैट पर चलने वाला एक एप्लीकेशन प्रोफाइल करना चाहता हूं। दुर्भाग्यवश, जब मैं टॉमकैट प्रोफाइल करने के लिए VisualVM को बताता हूं, तो टॉमकैट कुछ संदेशों को प्रिंट करता है जो इंगित करता है कि यह एक प्रोफ़ाइल टूल से कनेक्ट हो रहा है और फिर बस बाहर निकलता है।प्रोफ़ाइल टॉमकैट एप्लिकेशन विजुअलVM

विवरण ...

मैं Windows XP, बिलाव 6, VisualVM 1.2.1, और JDK 1.6.0_11 उपयोग कर रहा हूँ।

  1. दृश्य वीएम में, मैं बिलाव आवेदन पर राइट क्लिक करें और "प्रोफाइल"
  2. प्रोफाइलर टैब में चयन करते हैं, मैं मेमोरी बटन (या सीपीयू बटन) दबाएँ।
  3. बिलाव बाहर निकालता है

नोट अगर मैं बिलाव आवेदन पर राइट क्लिक करें और "ढेर डंप" ठीक काम करने के लिए लगता है कि चयन है।

+0

क्या कोई भी टोमकैट अनुप्रयोगों को देखने के लिए VisualVM का उपयोग कर रहा है? – rwsimmo

+5

मुझे जेएमएक्स या जेस्टैट के माध्यम से कनेक्शन के दौरान "प्रोफ़ाइल" टैब नहीं दिख रहा है। क्या मुझे जावा या jvisualvm के विशेष संस्करणों की आवश्यकता है? – Jan

+0

मुझे जेएमएक्स के माध्यम से कनेक्ट करते समय "प्रोफ़ाइल" टैब भी नहीं दिखता है। क्या इस मुद्दे को दूसरों के लिए हल किया गया था? – Glennn

उत्तर

85

मेरे पास है जो अब मेरे Tomcat एप्लिकेशन के साथ काम कर रहा है। VisualVM साथ Tomcat की निगरानी पर

-Dcom.sun.management.jmxremote.port=8086 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Here is a nice article: मैं बिल्ला स्टार्टअप के लिए निम्न पैरामीटर शामिल की जरूरत है।

+0

धन्यवाद मैं दृश्य वीएम में बनाई गई वस्तुओं को देखने में सक्षम हूं। मुझे संदेह है कि हमारे पास एप्लिकेशन में मेमोरी लीक है और मैं देखना चाहता हूं कि कौन सी ऑब्जेक्ट किस ऑब्जेक्ट्स के संदर्भ रखती है? + कौन सी वस्तुएं कितनी मेमोरी ले रही हैं? क्या यह टॉमकैट की वस्तु या उसके अनुप्रयोग की वस्तु है। मैं कोड स्तर तक ट्रैक करना चाहता हूं, क्या यह संभव है? क्या दृश्य कोड के साथ किसी भी तरह अपना कोड संलग्न करना संभव है? अग्रिम धन्यवाद। –

+3

यह प्रोफाइलिंग नहीं है। यह नमूना है। मेरे पास एक जेएमएक्स कनेक्शन है लेकिन केवल सीपीयू नमूना उपलब्ध है। मैं tomcat6.exe के साथ उपलब्ध प्रोफाइलिंग (वाद्य यंत्र + मेमोरी) कैसे प्राप्त करूं? – Chloe

+0

हाल ही में, लिनक्स के साथ विन्यस्त अगर जरूरत http://progrnotes.blogspot.com/2012/07/visualvm-configuration-with-tomcat-linux.html – Sergey

7

हां हम प्रोफाइल टोमकैट अनुप्रयोग करते हैं।

catalina.bat या catalina.sh और को यह करने के लिए जाओ अपने JAVA_OPTS (मैं बिलाव 6.0.16 उपयोग कर रहा हूँ):

-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 

आपका JAVA_OPTS दिखना चाहिए

set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false 

रयान टिप्पणी के बाद अपडेट किया गया है कि यह है की तरह setenv.sh का उपयोग करने के लिए बेहतर है। जेडीके 8 के लिए यह मेरा setenv.sh है। कुछ अन्य सेटिंग्स खोना लेकिन शुरुआत करने के लिए अच्छा है।

SUN_JVM_OPTS=" 
    -server \ 
    -XX:MaxMetaspaceSize=3G \ 
    -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \ 
    -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 \ 
    -XX:+ScavengeBeforeFullGC -XX:+CMSScavengeBeforeRemark \ 
    -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=2M \ 
    -XX:+HeapDumpOnOutOfMemoryError \ 
    -Dsun.net.inetaddr.ttl=60 \ 
    -Dcom.sun.management.jmxremote \ 
    -Dcom.sun.management.jmxremote.port=8480 \ 
    -Dcom.sun.management.jmxremote.authenticate=false \ 
    -Dcom.sun.management.jmxremote.ssl=false" 


# Set custom application options here 
APPLICATION_OPTS="-Dlog4j.configurationFile=patht-to-log/log4j2.xml -Dlog4j.debug=true " 

JVM_OPTS="$GENERAL_JVM_OPTS $SUN_JVM_OPTS" 
CATALINA_OPTS="$JVM_OPTS $APPLICATION_OPTS" 
echo "Tomcat started with settings "$CATALINA_OPTS 

एक बार जब आप बिन निर्देशिका में setenv.sh ड्रॉप, आप स्टार्टअप पर कंसोल में परिवर्तन देख सकते हैं। Trouble shooting application performance with Visual VM

+0

यदि मैं लिंक पर विवरण का पालन करता हूं तो मैं विजुअलVM को टॉमकैट से कनेक्ट कर सकता हूं लेकिन कोई प्रोफाइल टैब नहीं है। इसके अलावा, विवरण सटीक नहीं है। यह कहता है "स्थानीय या दूरस्थ पर क्लिक करें" लेकिन VisualVM में ऐसा कोई चयन नहीं है। मैंने "जेएमएक्स कनेक्शन जोड़ें" चुना और "लोकलहोस्ट: 9 0 9 0" कनेक्शन निर्दिष्ट किया। मुझे लगता है कि है कि वे क्या मतलब है ... – Wolfgang

+0

@Wolfgang भाषा – vsingh

+11

आप वास्तव में इस के लिए JAVA_OPTS उपयोग नहीं करना चाहिए तय है - आप एक bin/setenv.sh फ़ाइल में बजाय CATALINA_OPTS का उपयोग करना चाहिए (आप catalina.sh संपादित नहीं करना चाहिए - पहले से ही आपके लिए setenv.sh पर कॉल करता है) – Ryan

1

मैं बिलाव 7 उपयोग कर रहा हूँ और पूर्ण विन्यास काम करने के लिए अधिक पैरामीटर reqires:

यहाँ दृश्य वी एम के साथ बिलाव अनुप्रयोगों प्रोफ़ाइल कदम ट्यूटोरियल द्वारा एक और कदम है।

-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=9090 # port to connect JMX 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Djava.rmi.server.hostname=50.112.22.47" # IP of the server running tomcat (it is necessary) 

स्रोत: http://blog.markshead.com/1129/connecting-visual-vm-to-tomcat-7/

+0

को अपडेट किया गया जो 'java.rmi.server.hostname' मेरे लिए काम करता है। यह या तो आईपी या मेजबाननाम –

0

आप सभी यह इन वीएम विकल्पों को सेट करने की जरूरत है:

-XX: + UnlockCommercialFeatures -XX: + FlightRecorder -XX: + UnlockDiagnosticVMOptions -XX: + DebugNonSafepoints -XX: FlightRecorderOptions = stackdepth = 512

+0

मिशन नियंत्रण के साथ हो सकता है –

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