如何生成 hprof文件 + weblogic启动文件配置

来源:互联网 发布:新版淘宝购物评级在哪 编辑:程序博客网 时间:2024/04/30 10:38

系统宕机了,weblogic生成 .phd 和  javacore文件,分别使用 jca457.jar  和  ha456.jar来分析,但是heapdump文件分析时指向的问题和内存泄漏点类并不是很方便对应我们的代码,所以想使用mat工具来分析,但是需要生成 hprof文件


需要修改startWebLogic.sh文件,宕机时就会自动生成对应的hprof文件


LOG_OPTIONS="-Xloggc:$LOG_PATH/gc.$$.log -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:HeapDumpPath=$LOG_PATH/heapdump.$$.hprof -XX:ErrorFile=$LOG_PATH/hs_err_pid.$$.log" 







#!/bin/sh


# WARNING: This file is created by the Configuration Wizard.
# Any changes to this script may be lost when adding extensions to this configuration.


# --- Start Functions ---


stopAll()
{
# We separate the stop commands into a function so we are able to use the trap command in Unix (calling a function) to stop these services
if [ "X${ALREADY_STOPPED}" != "X" ] ; then
exit
fi
# STOP DERBY (only if we started it)
if [ "${DERBY_FLAG}" = "true" ] ; then
echo "Stopping Derby server..."
${WL_HOME}/common/derby/bin/stopNetworkServer.sh  >"${DOMAIN_HOME}/derbyShutdown.log" 2>&1 


echo "Derby server stopped."
fi


ALREADY_STOPPED="true"
}


classCaching()
{
echo "Class caching enabled..."
JAVA_OPTIONS="${JAVA_OPTIONS} -Dlaunch.main.class=${SERVER_CLASS} -Dlaunch.class.path="${CLASSPATH}" -Dlaunch.complete=weblogic.store.internal.LockManagerImpl -cp ${WL_HOME}/server/lib/pcl2.jar"
export JAVA_OPTIONS
SERVER_CLASS="com.oracle.classloader.launch.Launcher"
}


# --- End Functions ---


# *************************************************************************
# This script is used to start WebLogic Server for this domain.

# To create your own start script for your domain, you can initialize the
# environment by calling @USERDOMAINHOME/setDomainEnv.

# setDomainEnv initializes or calls commEnv to initialize the following variables:

# BEA_HOME       - The BEA home directory of your WebLogic installation.
# JAVA_HOME      - Location of the version of Java used to start WebLogic
#                  Server.
# JAVA_VENDOR    - Vendor of the JVM (i.e. BEA, HP, IBM, Sun, etc.)
# PATH           - JDK and WebLogic directories are added to system path.
# WEBLOGIC_CLASSPATH
#                - Classpath needed to start WebLogic Server.
# PATCH_CLASSPATH - Classpath used for patches
# PATCH_LIBPATH  - Library path used for patches
# PATCH_PATH     - Path used for patches
# WEBLOGIC_EXTENSION_DIRS - Extension dirs for WebLogic classpath patch
# JAVA_VM        - The java arg specifying the VM to run.  (i.e.
#                - server, -hotspot, etc.)
# USER_MEM_ARGS  - The variable to override the standard memory arguments
#                  passed to java.
# PRODUCTION_MODE - The variable that determines whether Weblogic Server is started in production mode.
# DERBY_HOME - Derby home directory.
# DERBY_CLASSPATH
#                - Classpath needed to start Derby.

# Other variables used in this script include:
# SERVER_NAME    - Name of the weblogic server.
# JAVA_OPTIONS   - Java command-line options for running the server. (These
#                  will be tagged on to the end of the JAVA_VM and
#                  MEM_ARGS)
# CLASS_CACHE    - Enable class caching of system classpath.

# For additional information, refer to "Managing Server Startup and Shutdown for Oracle WebLogic Server"
#  (http://download.oracle.com/docs/cd/E17904_01/web.1111/e13708/overview.htm).
# *************************************************************************


umask 037




# Call setDomainEnv here.


DOMAIN_HOME="/weblogic/domains/m3oapp"


if [ "X${SERVER_NAME}" = "X" ] ; then
   SERVER_NAME="Admin_app"
fi
CURRENTUSER=`whoami`
if [ "$CURRENTUSER" = "root" ] ; then 
   echo "Don't use root to start weblogic!!!"
   exit 0
fi
umask 022




LOG_PATH="$DOMAIN_HOME/logs" 
WLS_REDIRECT_LOG="$LOG_PATH/weblogic.${SERVER_NAME}.$$.log" 
USER_MEM_ARGS="-d64 -Xms5120m -Xmx5120m -Xmn1024m -XX:PermSize=1024m -XX:MaxPermSize=1024m "
JMX_OPTIONS=" -Dcom.sun.management.jmxremote.port=7401 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false" 
LOG_OPTIONS="-Xloggc:$LOG_PATH/gc.$$.log -XX:+PrintGCDetails  -XX:+PrintGCTimeStamps -XX:HeapDumpPath=$LOG_PATH/heapdump.$$.hprof -XX:ErrorFile=$LOG_PATH/hs_err_pid.$$.log" 
GC_OPTIONS="-XX:+ExplicitGCInvokesConcurrent -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=60 -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:MaxTenuringThreshold=18  -XX:SurvivorRatio=8 -XX:ParallelGCThreads=16 -XX:+HeapDumpOnOutOfMemoryError" 


APP_OPTIONS=" -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true " 
JAVA_OPTIONS=" -d64  $JMX_OPTIONS $LOG_OPTIONS $GC_OPTIONS $APP_OPTIONS -Dweblogic.threadpool.MinPoolSize=100 -Dweblogic.threadpool.MaxPoolSize=1000 -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder -Dweblogic.data.canTransferAnyFile=true -Djava.net.preferIPv4Stack=true  -Dweblogic.wsee.wstx.wsat.deployed=false" 


. ${DOMAIN_HOME}/bin/setDomainEnv.sh $*


SAVE_JAVA_OPTIONS="${JAVA_OPTIONS}"


SAVE_CLASSPATH="${CLASSPATH}"


# Start Derby


DERBY_DEBUG_LEVEL="0"


if [ "${DERBY_FLAG}" = "true" ] ; then
${WL_HOME}/common/derby/bin/startNetworkServer.sh  >"${DOMAIN_HOME}/derby.log" 2>&1 


fi


JAVA_OPTIONS="${SAVE_JAVA_OPTIONS}"


SAVE_JAVA_OPTIONS=""


CLASSPATH="${SAVE_CLASSPATH}"


SAVE_CLASSPATH=""


trap 'stopAll' 1 2 3 15




if [ "${PRODUCTION_MODE}" = "true" ] ; then
WLS_DISPLAY_MODE="Production"
else
WLS_DISPLAY_MODE="Development"
fi


if [ "${WLS_USER}" != "" ] ; then
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.username=${WLS_USER}"
fi


if [ "${WLS_PW}" != "" ] ; then
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.management.password=${WLS_PW}"
fi


if [ "${MEDREC_WEBLOGIC_CLASSPATH}" != "" ] ; then
if [ "${CLASSPATH}" != "" ] ; then
CLASSPATH="${CLASSPATH}${CLASSPATHSEP}${MEDREC_WEBLOGIC_CLASSPATH}"
else
CLASSPATH="${MEDREC_WEBLOGIC_CLASSPATH}"
fi
fi


echo "."


echo "."


echo "JAVA Memory arguments: ${MEM_ARGS}"


echo "."


echo "WLS Start Mode=${WLS_DISPLAY_MODE}"


echo "."


echo "CLASSPATH=${CLASSPATH}"


echo "."


echo "PATH=${PATH}"


echo "."


echo "***************************************************"


echo "*  To start WebLogic Server, use a username and   *"


echo "*  password assigned to an admin-level user.  For *"


echo "*  server administration, use the WebLogic Server *"


echo "*  console at http://hostname:port/console        *"


echo "***************************************************"


# CLASS CACHING


if [ "${CLASS_CACHE}" = "true" ] ; then
classCaching
fi


# START WEBLOGIC


echo "starting weblogic with Java version:"


${JAVA_HOME}/bin/java ${JAVA_VM} -version


if [ "${WLS_REDIRECT_LOG}" = "" ] ; then
echo "Starting WLS with line:"
echo "${JAVA_HOME}/bin/java -Dweblogic.Name=${SERVER_NAME} ${JAVA_VM} ${MEM_ARGS}  -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}"
${JAVA_HOME}/bin/java -Dweblogic.Name=${SERVER_NAME} ${JAVA_VM} ${MEM_ARGS}  -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}
else
echo "Redirecting output from WLS window to ${WLS_REDIRECT_LOG}"
${JAVA_HOME}/bin/java -Dweblogic.Name=${SERVER_NAME} ${JAVA_VM} ${MEM_ARGS}  -Djava.security.policy=${WL_HOME}/server/lib/weblogic.policy ${JAVA_OPTIONS} ${PROXY_SETTINGS} ${SERVER_CLASS}  >"${WLS_REDIRECT_LOG}" 2>&1 
fi


stopAll


popd


# Exit this script only if we have been told to exit.


if [ "${doExitFlag}" = "true" ] ; then
exit
fi


0 0
原创粉丝点击