陈奇网络工作室

tomcat轻松优化

系统运输

我的优化配置:

Java _ opts=-xms 16384 m-xmx 16384 m-xlog GC:/home/soft/880 _ GC.log-x ss256 k-xmn 6144 m-xx:permsize=1024 m-xx:maxperm size=1024 m-xx:survivor ratio=6- xx:maxter actatfullcollection-xx:cmsinitiatingoccupancyfraction=60 freflrupolicymspermb=0- xx:targetsurvivorratio=90-xx:60

Tomcat优化包括系统优化、Java虚拟机优化和Tomcat本身优化。

调整tomcat的占用内存

编辑catalina.sh文件

vim catalina.sh

已找到tomcat内存参数行。/JAVA_OPTS (如果找不到,则写入第一行。

3.Java _ opts=-xms 1024 m根据服务器的实际内存容量分别修改xmx 1520 m行中的两个参数。

xms启动tomcat的初始内存。 通常是服务器开机后可用内存减去100米

xmx是tomcat的最大消耗内存,通常为服务器开机后可用内存减去50米

一般应该使用的物理存储器的80% %u4F5C是堆大小。

这两个参数与tomcat接受的访问性能有关,必须根据服务器的实际内存情况进行设置。

Xms和Xmx的值最好相同。 内存回收速度加快,经常被GC

值的大小通常根据需要进行设定。 初始化堆的大小表示虚拟机启动时向系统请求的内存大小。 一般来说,这个参数不重要。 但是,某些APP应用程序在负载过大时会急剧消耗大量内存。 在这种情况下,此参数非常重要。 如果启动虚拟机时使用的内存较少,并且初始化了许多对象,则虚拟机必须反复增加内存才能满足使用要求。 因此,通常将-Xms和-Xmx设置为相同的大小,并且堆的最大值限制为系统使用的物理内存。 通常,数据密集型APP应用程序会使用持久性对象,并且内存使用量可能会快速增加。 如果APP应用程序所需的内存超过堆的最大值,虚拟机将通知内存溢出,并导致APP应用程序服务崩溃。 因此,建议将堆的最大值配置为可用内存最大值的80%%u3002

Tomcat默认可用内存为128MB,在实际生产中,这种程度的内存通常不够,需要加大

在/bin/catalina.sh中,添加以下配置:

JAVA_OPTS=\\\& #039; -Xms[初始化内存大小] -Xmx[最大可用内存] : quot;

根据需要增加这两个参数的值。 例如:

Ava_opts=\\\& quot; -XMS256m-xmx512m\\\& quot;

表示初始化内存为256MB,最大可用内存为512MB。

必须考虑的是Java提供的垃圾回收机制。 虚拟机堆大小决定了虚拟机用于垃圾收集的时间和频率。 垃圾收集被接受的速度与应用有关,应该通过分析实际垃圾收集的时间和频率来调整。 如果山很大,完全垃圾的收集就会变慢,但频率会下降。 如果使堆大小和内存需求相匹配,则完全收集会更快,但会更频繁地收集。 更改堆大小的目的是最大限度地减少垃圾回收时间,以便在特定时间内最大化客户请求。 基准测试中,为了确保最高性能,请增加堆的大小,以防止整个基准测试中发生垃圾收集。

如果系统要花很多时间收集垃圾,请减小堆大小。 一次完整的垃圾收集不得超过3-5秒。 当垃圾收集遇到瓶颈时,需要指定世代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。 通常,应该使用80 %的物理内存u4f5c作为堆大小。 增加处理器时,请记住增加内存。 因为分配可以并行进行,垃圾回收不是并行的。

调整tomcat的线程参数

编辑server.xml文件

在tomcat配置文件server.xml的Connector /配置中,与连接数相关的参数包括:

maxThreads=150意味着最多同时处理150个连接,Tomcat使用线程处理每个收到的请求。 此值表示Tomcat可以创建的最大线程数。 默认值为200。

minSpareThreads=25表示即使没有人在使用,也会打开这么多空闲线程等待

maxSpareThreads=75,如果最多能够空闲75个线程,例如,在给定时刻80人访问,然后谁也不再访问,则tomcat关闭5个空闲线程,剩下80个空闲线程(如果创建的线程超过此值,Tomcat将关闭不再需要的套接字线程。 默认值50 )

acceptCount=100,同时连接的人数达到maxThreads时,也可以接收排队的连接数,超过时直接返回拒绝连接。 (如果所有可用处理请求的线程数都已使用,则指定可以进入处理队列的请求数,而不处理超过此数的请求。 默认值100 )

其中,与最大连接数相关联的参数是maxThreads和acceptCount。 要增加并发连接数,必须增大这两个参数。

web server允许的最大连接数还取决于操作系统的内核参数设置。 通常,Windows为2000个左右,Linux为1000个左右。 tomcat5的配置示例:

连接器端口=8080

max threads=150 minsparethreads=25 maxsparethreads=75

acceptCount=100/

主要是调整maxThreads和acceptCount的值

在tomcat配置文档server.xml的配置中,与连接数相关的其他参数包括:

enableLookups是否反向查找域名,默认值为true。 要提高处理能力,必须将其配置为false

连接时间输出网络连接超时。 默认值为60000,单位为毫秒。 设置为0表示不超时。 这样配置的话会有危险性。 通常可以设定为30000毫秒。

maxKeepAliveRequestsnginx动态传输到tomcat。 nginx不能保留。 另一方面,tomcat端默认打开keepalive,等待keepalive的timeout。 默认情况下使用连接时间输出。

因此,必须设置tomcat的超时时间,并关闭tomcat的keepalive。 否则,会产生大量的tomcat套接字时间等待。

如果maxKeepAliveRequests=1,则可以避免tomcat生成大量的TIME_WAIT连接,在一定程度上避免tomcat的假死。

要设置tomcat/conf/server.xml :

maxKeepAliveRequests=1

连接时间out=20000

maxKeepAliveRequests=1 ##表示每个连接只响应一次并关闭,不等待timeout

connector executor=Tomcat thread pool

端口=8080 protocol=http/1.1

connection time out=30000 maxkeepaliverequests=1

redirect port=8443 buffer size=8192 socked buffer=65536 accept count=200 /

bufferSize输入流缓冲区大小,默认值2048 bytes。

压缩传输、on/off/force值、off默认值

贴上我的设定档:

catalina _ opts=-DCOM.sun.management.JMX remote-DCOM.sun.management.JMX remote.authenticate=false-DCOM.DCOM

Java _ opts=-xms 16384 m-xmx 16384 m-xlog GC:/home/soft/880 _ GC.log-x ss256 k-xmn 6144 m-xx:permsize=1024 m-xx:maxperm size=1024 m-xx:survivor ratio=6- xx:maxter l collection-xx:cmsinitiatingoccupancyfraction=60-xx:cmsinitiatingocupancyfraction ymspermb=0- xx:targetsurvivivorrvorrrrrrition

# Java _ opts=-xms 4096 m-xmx 16384 m-xx:maxperm size=1024 m

# osspecificsupport.$ var _ must _ besettoeithertrueorfalse。

cygwin=false

darwin=false

os400=false

case`uname`in

Cygwin*(Cygwin=true;

Darwin*(Darwin=true;

OS400* ) os400=true;

欧洲航空

#resolvelinks-$0maybeasoftlink

PRG=$0

while[-h$PRG]; do

ls=`ls-ld$PRG `

link=`Expr$ls:\\\& quot; *\\& quot; ((() ) ) )。( ( () ( ( ( ( ( ) ( ( ) ( ) ) ) ) ) ) ) ) ) )

ifExpr$link:\\& quot; /.*\& quot; /dev/null; then

PRG=$link

else

PRG=`dirname$PRG`/$link

fi

# getstandardenvironmentvariables

PRGDIR=`dirname$PRG `

# onlysetcatalina _ homeifnotalreadyset

[-z $ catalina _ home ] catalina _ home=` CD $ PRG dir/./dev/null; pwd `

# copy catalina _ basefromcatalina _ homeifnotalreadyset

[-z $ catalina _ base ] catalina _ base=$ catalina _ home

# ensurethatneithercatalina _ homenorcatalina _ basecontainsacolon

# asthisisusedastheseparatorintheclasspathandjavaprovidesno

# mechanismforescapingifthesamecharacterappearsinthepath。

case$CATALINA_HOMEin

* * echousingcatalina _ home:$ catalina _ home;

echounabletostartascatalina _ homecontainsacolon (:)字符;

exit1;

欧洲航空

case$CATALINA_BASEin

* * ( echousingcatalina _ base:$ catalina _ base;

echounabletostartascatalina _ basecontainsacolon (:)字符;

exit1;

欧洲航空

# ensurethatanyuserdefinedclasspathvariablesarenotusedonstartup、

# butallowthemtobespecifiedinsetenv.sh,inrarecasewhenitisneeded。

CLASSPATH=

if [-r $ catalina _ base/bin/setenv.sh ]; then

. $CATALINA_BASE/bin/setenv.sh

elif [-r $ catalina _ home/bin/setenv.sh ]; then

. $CATALINA_HOME/bin/setenv.sh

fi

#ForCygwin,ensurepathsareinunixformatbeforeanythingistouched

if$cygwin; then

[-n $ Java _ home ] Java _ home=` cygpath-- UNIX $ Java _ home `

[-n $ JRE _ home ] JRE _ home=` cygpath-- UNIX $ JRE _ home `

[-n $ catalina _ home ] catalina _ home=` cygpath-- UNIX $ catalina _ home `

[-n $ catalina _ base ] catalina _ base=` cygpath-- UNIX $ catalina _ base `

[-n $ class path ] class path=` cygpath-- path-- UNIX $ class path `

fi

#ForOS400

if$os400; then

# setjobprioritytostandardforinteractive ( interactive-6 ) byusing

#theinteractivepriority-6、thelperthreadsthatrespondtorequests

# willberunningatthesamepriorityasinteractivejobs。

command=\\& quot; chgjobjob ( ( ( ( () ) ) $jobname ( ( ) ( ) ) ) ( runpty(6)6) ) ) ) ) ) )。

system$COMMAND

#启用多重读取

exportQIBM_MULTI_THREADED=Y

fi

# getstandardjavaenvironmentvariables

if$os400; then

#-rwillonlyworkontheos 400 ifthefilesare :

#1.ownedbytheuser

#2. ownedbytheprimarygroupoftheuser

# thiswillnotworkiftheuserbelongsinsecondarygroups

. $ catalina _ home/bin/SETC lasspath.sh

else

if [-r $ catalina _ home/bin/SETC lasspath.sh ]; then

. $ catalina _ home/bin/SETC lasspath.sh

else

echocannotfind $ catalina _ home/bin/SETC lasspath.sh

echothisfileisneededtorunthisprogram

exit1

fi

fi

#AddonextrajarfilestoCLASSPATH

if[! -z$CLASSPATH]; then

CLASSPATH=$CLASSPATH :

fi

class path=$ class path $ catalina _ home/bin/bootstrap.jar

if[-z$CATALINA_OUT]; then

catalina _ out=$ catalina _ base/logs/catalina.out

fi

if[-z$CATALINA_TMPDIR]; then

# define the Java.io.tmpdirtouseforcatalina

catalina _ tmpdir=$ catalina _ base/temp

fi

#Addtomcat-juli.jartoclasspath

# Tomcat-juli.jarcanbeover-riddenperinstance

if [-r $ catalina _ base/bin/Tomcat-juli.jar ]; then

class path=$ class path:$ catalina _ base/bin/Tomcat-juli.jar

else

class path=$ class path:$ catalina _ home/bin/Tomcat-juli.jar

fi

# bugzilla 37848:whennottyisavailable,don\\\& #039; toutputtoconsole

have_tty=0

( if ) tty )!=notatty]; then

have_tty=1

fi

#ForCygwin,switchpathstowindowsformatbeforerunningjava

if$cygwin; then

Java _ home=` cygpath---absolute---windows $ Java _ home `

JRE _ home=` cygpath-- absolute-- windows $ JRE _ home `

catalina _ home=` cygpath---- absolute---windows $ catalina _ home `

catalina _ base=` cygpath---- absolute---windows $ catalina _ base `

catalina _ tmpdir=` cygpath---- absolute---windows $ catalina _ tmpdir `

class path=` cygpath---path---windows $ class path `

Java _ endorsed _ dirs=` cygpath-- path-- windows $ Java _ endorsed _ dirs `

fi

# setjulilogmanagerconfigfileifitispresentandanoverridehasnotbeenissued

if[-z$LOGGING_CONFIG]; then

if [-r $ catalina _ base/conf/logging.properties ]; then

logging _ config=-DJ ava.util.logging.config.file=$ catalina _ base/conf/logging.properties

else

#Bugzilla45585

LOGGING_CONFIG=-Dnop

fi

fi

if[-z$LOGGING_MANAGER]; then

logging _ manager=-DJ ava.util.logging.manager=org.Apache.juli.classloaderlogmanager

fi

# uncommentthefollowinglinetomaketheumaskavailablewhenusingthe

# org.Apache.catalina.security.security listener

# Java _ opts=$ Java _ opts-dorg.Apache.catalina.security.security listener.umask=` umask `

----------------executetherequestedcommand-------------- executetherequestedcommmand

# bugzilla 37848:onlyoutputthisifwehaveatty

if[$have_tty-eq1]; then

echousingcatalina _ base:$ catalina _ base

echousingcatalina _ home:$ catalina _ home

echousingcatalina _ tmpdir:$ catalina _ tmpdir

if[$1=debug]; then

echoUsingJAVA_HOME:$JAVA_HOME

else

echoUsingJRE_HOME:$JRE_HOME

fi

echoUsingCLASSPATH:$CLASSPATH

if[! -z$CATALINA_PID]; then

echousingcatalina _ PID:$ catalina _ PID

fi

fi

if[$1=jpda]; then

if[-z$JPDA_TRANSPORT]; then

JPDA_TRANSPORT=dt_socket

fi

if[-z$JPDA_ADDRESS]; then

JPDA_ADDRESS=localhost:8000

fi

if[-z$JPDA_SUSPEND]; then

JPDA_SUSPEND=n

fi

if[-z$JPDA_OPTS]; then

jda _ opts=-agent lib:jdwp=transport=$ JPDA _ transport,address=$JPDA_ADDRESS,server=y,suspend=$jpend

fi

catalina _ opts=$ JPDA _ opts $ catalina _ opts

shift

fi

if[$1=debug]; then

if$os400; then

echodebugcommandnotavailableonos 400

exit1

else

shift

if[$1=-security]; then

if[$have_tty-eq1]; then

电子安全管理器

fi

shift

exec $ _ run jdb $ logging _ config $ logging _ manager $ Java _ opts $ catalina _ opts _ _ & amp; quot;

- DJ ava.endorsed.dirs=$ Java _ endorsed _ dirs-class path $ class path\\ & amp; quot;

- source path $ catalina _ home/././Java\\

-Djava.security.manager\\\\& quot;

- DJ ava.security.policy==$ catalina _ base/conf/catalina.policy\\ & amp; quot;

- d catalina.base=$ catalina _ base\& amp; quot;

- d catalina.home=$ catalina _ home\\

- DJ ava.io.tmpdir=$ catalina _ tmpdir\\

org.Apache.catalina.startup.bootstrap $ @ start

else

exec $ _ run jdb $ logging _ config $ logging _ manager $ Java _ opts $ catalina _ opts _ _ & amp; quot;

- DJ ava.endorsed.dirs=$ Java _ endorsed _ dirs-class path $ class path\\ & amp; quot;

- source path $ catalina _ home/././Java\\

- d catalina.base=$ catalina _ base\& amp; quot;

- d catalina.home=$ catalina _ home\\

- DJ ava.io.tmpdir=$ catalina _ tmpdir\\

org.Apache.catalina.startup.bootstrap $ @ start

fi

fi

elif[$1=run]; then

shift

if[$1=-security]; then

if[$have_tty-eq1]; then

电子安全管理器

fi

shift

evalexec\\\& quot; $_runJava\\& quot; \& quot; \& quot; \& quot; \& quot; $logging_config\\& quot; $logging_manager$Java_opts

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-Djava.security.manager\\\\& quot;

- DJ ava.security.policy==\\\\ & amp; quot; $ catalina _ base/conf/catalina.policy\\ & amp; quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap $ @ start

else

evalexec\\\& quot; $_runJava\\& quot; \& quot; \& quot; \& quot; \& quot; $logging_config\\& quot; $logging_manager$Java_opts

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap $ @ start

fi

elif[$1=start]; then

if[! -z$CATALINA_PID]; then

if[-f$CATALINA_PID]; then

if[-s$CATALINA_PID]; then

echoexistingpidfilefoundduringstart。

if[-r$CATALINA_PID]; then

PID=`cat$CATALINA_PID `

ps-p$PID/dev/null21

if[$? -eq0]; then

echotomcatappearstostillberunningwithpid $ PID.start aborted。

echoifthefollowingprocessisnotatomcatprocess,removethePIDfileandtryagain :

ps-f-p$PID

exit1

else

修复/清除字符文件。

rm-f$CATALINA_PID/dev/null21

if[$?=0); then

if[-w$CATALINA_PID]; then

cat/dev/null$CATALINA_PID

else

echounabletoremoveorclearstalepidfile.start aborted。

exit1

fi

fi

fi

else

echounabletoreadpidfile.start aborted。

exit1

fi

else

rm-f$CATALINA_PID/dev/null21

if[$?=0); then

if[! -w$CATALINA_PID]; then

echounabletoremoveorwritetoemptypidfile.start aborted。

exit1

fi

fi

fi

fi

fi

shift

touch$CATALINA_OUT

if[$1=-security]; then

if[$have_tty-eq1]; then

电子安全管理器

fi

shift

eval\\\& quot; $_runJava\\& quot; \& quot; \& quot; \& quot; \& quot; $logging_config\\& quot; \& quot; $ logging _ manager $ Java _ opts $ cava

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-Djava.security.manager\\\\& quot;

- DJ ava.security.policy==\\\\ & amp; quot; $ catalina _ base/conf/catalina.policy\\ & amp; quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap $ @ start\\ & amp; quot;

$CATALINA_OUT21

else

eval\\\& quot; $_runJava\\& quot; \& quot; \& quot; \& quot; \& quot; $logging_config\\& quot; \& quot; $ logging _ manager $ Java _ opts $ cava

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap $ @ start\\ & amp; quot;

$CATALINA_OUT21

fi

if[! -z$CATALINA_PID]; then

echo$! $CATALINA_PID

fi

echoTomcatstarted

elif[$1=stop]; then

shift

SLEEP=5

if[! -z$1]; then

echo$1|grep[^0-9]/dev/null21

if[$? -gt0] ); then

SLEEP=$1

shift

fi

fi

FORCE=0

if[$1=-force]; then

shift

FORCE=1

fi

if[! -z$CATALINA_PID]; then

if[-f$CATALINA_PID]; then

if[-s$CATALINA_PID]; then

kill-0 ` cat $ catalina _ PID `/dev/null 21

if[$? -gt0] ); then

echopidfilefoundbutnomatchingprocesswasfound.stop aborted。

exit1

fi

else

echopidfileisemptyandhasbeenignored。

fi

else

echo\\\& quot; catalina _ pidwassetbutthespecifiedfiledoesnotexist.istomcatrunning? 已停止。

exit1

fi

fi

eval\\\& quot; $_runJava\\& quot; $ logging _ manager $ Java _ opts\_ & amp; quot;

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap $ @ stop

# stop failed.shutdownportdisabled? Tryanormalkill。

if[$?=0); then

if[! -z$CATALINA_PID]; then

echothestopcommandfailed.atemptingtosignaltheprocesstostopthroughossignal。

kill-15 ` cat $ catalina _ PID `/dev/null 21

fi

fi

if[! -z$CATALINA_PID]; then

if[-f$CATALINA_PID]; then

while[$SLEEP-ge0]; do

kill-0 ` cat $ catalina _ PID `/dev/null 21

if[$? -gt0] ); then

rm-f$CATALINA_PID/dev/null21

if[$?=0); then

if[-w$CATALINA_PID]; then

cat/dev/null$CATALINA_PID

#Iftomcathasstoppeddon\\& quot; tttryandforceastopwithanemptypidfile

FORCE=0

else

echothepidfilecouldnotberemovedorcleared。

fi

fi

echoTomcatstopped。

布莱克

fi

if[$SLEEP-gt0]; then

第一阶段

fi

if[$SLEEP-eq0]; then

echoTomcatdidnotstopintime。

if[$FORCE-eq0]; then

加密文件擦除。

fi

echotoaiddiagnosticsathreaddumphasbeenwrittentostandardout。

kill-3`cat$CATALINA_PID `

fi

SLEEP=`expr$SLEEP-1 `

fi

fi

KILL_SLEEP_INTERVAL=5

if[$FORCE-eq1]; then

if[-z$CATALINA_PID]; then

echokillfailed:\\& quot; $catalina_pidnotset

else

if[-f$CATALINA_PID]; then

PID=`cat$CATALINA_PID `

echokillingtomcatwiththepid:$ PID

kill-9$PID

while [ $ kill _ sleep _ interval-ge0 ]; do

kill-0 ` cat $ catalina _ PID `/dev/null 21

if[$? -gt0] ); then

rm-f$CATALINA_PID/dev/null21

if[$?=0); then

if[-w$CATALINA_PID]; then

cat/dev/null$CATALINA_PID

else

echothepidfilecouldnotberemoved。

fi

fi

echothetomcatprocesshasbeenkilled。

布莱克

fi

if[$KILL_SLEEP_INTERVAL-gt0]; then

第一阶段

fi

kill _ sleep _ interval=` expr $ kill _ sleep _ interval-1 `

if[$KILL_SLEEP_INTERVAL-lt0]; then

echotomcathasnotbeenkilledcompletelyyet.theprocessmightbewaitingonsomesystemcallormightbeuninterruptible。

fi

fi

fi

fi

elif[$1=configtest]; then

eval\\\& quot; $_runJava\\& quot; $ logging _ manager $ Java _ opts\_ & amp; quot;

-DJAva.endorsed.dirs=\\\\\& quot; Java_endorsed_dirs\\\& quot; -classpath\\\\& quot; \$classpath\\\\& quot;

-dcatalina.base=\\\\& quot; $catalina_base\\\\& quot; \& quot;

-dcatalina.home=\\\\\& quot; catalina_home\\\\& quot;

-DJAva.io.tmpdir=\\\\& quot; catalina_tmpdir\\\\& quot;

org.Apache.catalina.startup.bootstrap config test

result=$?

if[$result-ne0]; then

echoConfigurationerrordetected!

fi

退出$ result

elif[$1=version]; then

$_RUNJAVA\\\\& quot;

- class path $ catalina _ home/lib/catalina.jar\\ & amp; quot;

org.Apache.catalina.util.server info

else

Echousage:Catalina.sh(commands . ) )。

echocommands :

if$os400; then

echodebugstartcatalinainadebugger ( notavailableonos 400 ) )。

echo调试-安全调试链接

a security manager (not available on OS400)   else     echo   debug             Start Catalina in a debugger     echo   debug -security   Debug Catalina with a security manager   fi   echo   jpda start        Start Catalina under JPDA debugger   echo   run               Start Catalina in the current window   echo   run -security     Start in the current window with security manager   echo   start             Start Catalina in a separate window   echo   start -security   Start in a separate window with security manager   echo   stop              Stop Catalina, waiting up to 5 seconds for the process to end   echo   stop n            Stop Catalina, waiting up to n seconds for the process to end   echo   stop -force       Stop Catalina, wait up to 5 seconds and then use kill -KILL if still running   echo   stop n -force     Stop Catalina, wait up to n seconds and then use kill -KILL if still running   echo   configtest        Run a basic syntax check on server.xml - check exit code for result   echo   version           What version of tomcat are you running?   echo Note: Waiting for the process to end and use of the -force option require that \\\\$CATALINA_PID is defined   exit 1 fi

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码官网:www.chenqinet.cn

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3