您的位置:首页 > 其它

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

2016-06-16 14:41 309 查看
系统宕机了,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: