日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tomcat无法shutdown进程问题解决办法

發布時間:2024/4/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tomcat无法shutdown进程问题解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉:http://blog.csdn.net/yydcj/article/details/8482916

我自己平時處理是: ps 獲取這個服務的進程號,全部kill掉,再sh startup.sh 啟動進程并確認啟動成功

1 問題現象

執行shutdown.sh之后,Web已經無法訪問:

Tomcat關聯java進程仍然存活:

?

[html]?view plaincopy
  • #/home/apache-tomcat-7.0.34/bin/shutdown.sh??
  • Using?CATALINA_BASE:???/home/apache-tomcat-7.0.34??
  • Using?CATALINA_HOME:???/home/apache-tomcat-7.0.34??
  • Using?CATALINA_TMPDIR:?/home/apache-tomcat-7.0.34/temp??
  • Using?JRE_HOME:????????/home/jdk1.6.0_34??
  • Using?CLASSPATH:???????/home/apache-tomcat-7.0.34/bin/bootstrap.jar:/home/apache-tomcat-7.0.34/bin/tomcat-juli.jar??
  • #?ps?aux?|?grep?'java.*tomcat'?|?grep?-v?grep??
  • root?????22465?15.3??8.6?1294300?346264?pts/0??Sl???14:55???1:08?/home/jdk1.6.0_34/bin/java?-Djava.util.logging.config.file=/home/apache-tomcat-7.0.34/conf/logging.properties?-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager?-Djava.endorsed.dirs=/home/apache-tomcat-7.0.34/endorsed?-classpath?/home/apache-tomcat-7.0.34/bin/bootstrap.jar:/home/apache-tomcat-7.0.34/bin/tomcat-juli.jar?-Dcatalina.base=/home/apache-tomcat-7.0.34?-Dcatalina.home=/home/apache-tomcat-7.0.34?-Djava.io.tmpdir=/home/apache-tomcat-7.0.34/temp?org.apache.catalina.startup.Bootstrap?start??
  • 2013-1-8 15:02:53 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbccatalina.out報內存泄露警告:

    ?

    ?

    [html]?view plaincopy
  • 嚴重:?The?web?application?[]?registered?the?JDBC?driver?[com.mysql.jdbc.Driver]?but?failed?to?unregister?it?when?the?web?application?was?stopped.?To?prevent?a?memory?leak,?the?JDBC?Driver?has?been?forcibly?unregistered.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Thread-2]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[thread-snatch-picture]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-0]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-1]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-2]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-3]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-4]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-5]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-6]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Xmemcached-Reactor-7]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Heal-Session-Thread]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[pool-2-thread-1]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[pool-2-thread-2]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[pool-2-thread-3]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[pool-2-thread-4]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[Timer-0]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?clearReferencesThreads??
  • 嚴重:?The?web?application?[]?appears?to?have?started?a?thread?named?[MySQL?Statement?Cancellation?Timer]?but?has?failed?to?stop?it.?This?is?very?likely?to?create?a?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?checkThreadLocalMapForLeaks??
  • 嚴重:?The?web?application?[]?created?a?ThreadLocal?with?key?of?type?[com.opensymphony.xwork2.inject.ContainerImpl$10]?(value?[com.opensymphony.xwork2.inject.ContainerImpl$10@b6c562])?and?a?value?of?type?[java.lang.Object[]]?(value?[[Ljava.lang.Object;@1d97383])?but?failed?to?remove?it?when?the?web?application?was?stopped.?Threads?are?going?to?be?renewed?over?time?to?try?and?avoid?a?probable?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?checkThreadLocalMapForLeaks??
  • 嚴重:?The?web?application?[]?created?a?ThreadLocal?with?key?of?type?[com.opensymphony.xwork2.inject.ContainerImpl$10]?(value?[com.opensymphony.xwork2.inject.ContainerImpl$10@b6c562])?and?a?value?of?type?[java.lang.Object[]]?(value?[[Ljava.lang.Object;@9a827])?but?failed?to?remove?it?when?the?web?application?was?stopped.?Threads?are?going?to?be?renewed?over?time?to?try?and?avoid?a?probable?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?checkThreadLocalMapForLeaks??
  • 嚴重:?The?web?application?[]?created?a?ThreadLocal?with?key?of?type?[com.opensymphony.xwork2.inject.ContainerImpl$10]?(value?[com.opensymphony.xwork2.inject.ContainerImpl$10@b6c562])?and?a?value?of?type?[java.lang.Object[]]?(value?[[Ljava.lang.Object;@12e71f1])?but?failed?to?remove?it?when?the?web?application?was?stopped.?Threads?are?going?to?be?renewed?over?time?to?try?and?avoid?a?probable?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?checkThreadLocalMapForLeaks??
  • 嚴重:?The?web?application?[]?created?a?ThreadLocal?with?key?of?type?[com.opensymphony.xwork2.inject.ContainerImpl$10]?(value?[com.opensymphony.xwork2.inject.ContainerImpl$10@b6c562])?and?a?value?of?type?[java.lang.Object[]]?(value?[[Ljava.lang.Object;@855793])?but?failed?to?remove?it?when?the?web?application?was?stopped.?Threads?are?going?to?be?renewed?over?time?to?try?and?avoid?a?probable?memory?leak.??
  • 2013-1-8?15:02:53?org.apache.catalina.loader.WebappClassLoader?checkThreadLocalMapForLeaks??
  • 嚴重:?The?web?application?[]?created?a?ThreadLocal?with?key?of?type?[com.opensymphony.xwork2.inject.ContainerImpl$10]?(value?[com.opensymphony.xwork2.inject.ContainerImpl$10@b6c562])?and?a?value?of?type?[java.lang.Object[]]?(value?[[Ljava.lang.Object;@5164df])?but?failed?to?remove?it?when?the?web?application?was?stopped.?Threads?are?going?to?be?renewed?over?time?to?try?and?avoid?a?probable?memory?leak.??
  • ?

    2 問題分析

    ?

    這個在windows下沒有碰到過,因為此前跑Tomcat都是以服務而不是命令腳本的形式跑的,而且已經換了一個項目,所以暫時不考察windows下是否存在該問題。

    難道是Tomcat版本問題?或者用帶內存泄漏保護的Tomcat 7可以解決該問題?嘗試將web應用跑在apache-tomcat-6.0.18、apache-tomcat-6.0.35、apache-tomcat-7.0.34,發現均存在無法shutdown.sh進程問題。

    難道在CentOS(Linux)下,Tomcat無法用shutdown.sh停掉進程?顯然不可能的。于是又把web應用從webapps中移走,換回tomcat自帶的ROOT,果然啟動后再shutdown.sh,查找不到原來的tomcat進程了,也就證明了是自己web應用的問題了。

    3 解決方案

    現在已經確定是web應用的問題了,所以可以提解決方案了。

    3.1 Kill進程

    忽略日志中的嚴重警告,因為這是關閉tomcat時候引起的,正常情況下不會發生這種內存泄露情況,而且Tomcat6.18以上版本的Tomcat已經做了內存泄露保護,交給Tomcat完成吧,我們只需要在shutdown.sh之后,補上一個kill -9 pid即可。要是嫌這樣太麻煩了,可以如下這樣改:

    ?

    [html]?view plaincopy
  • ==============================bin/shutdown.sh???
  • exec?"$PRGDIR"/"$EXECUTABLE"?stop??-force?"$@"??#加上?-force????
  • ???
  • ==============================bin/catalina.sh????
  • PRGDIR=`dirname?"$PRG"`后面加上??
  • if?[?-z?"$CATALINA_PID"?];?then??
  • ??????CATALINA_PID=$PRGDIR/CATALINA_PID??
  • ??????cat?$CATALINA_PID??
  • fi??
  • ?

    ?

    3.2 web應用中關閉后臺線程

    shutdown.sh后存在tomcat僵尸進程的原因是shutdown.sh后web應用沒有去關閉其啟用的后臺線程,所以處理的辦法是監聽到tomcat關閉事件時,關閉掉其啟用的后臺線程。

    Pstree? -p pid打印進程的線程樹,查看shutdown.sh后未關閉的后臺線程:

    通過Java VisualVM查看shutdown.sh后未關閉的活動線程

    ?

    在web應用中,如果有后臺線程,這時用shutdown.sh是關閉不掉Tomcat的。我們需要重寫相關的ServletContextListener的contextDestroyed(ServletContextEventarg0)方法,在它里面關閉后臺線程。

    但是,現在很多web應用都是由spring來管理bean的,實際情況下我們可能需要注入很多第三方jar中的bean。比如在applicationContext.xml中配置如下bean:

    <bean id ="dataSource" class ="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">

    則在org.apache.commons.dbcp.BasicDataSource需要做好銷毀數據庫線程池的邏輯。

    當然我們也可以自己設置銷毀邏輯。在web.xml文件中增加監聽器。

    ?

    [html]?view plaincopy
  • <listener>??
  • ????<listener-class>com.mysite.MySpecialListener</listener-class>??
  • </listener>??
  • MySpecialListener實現如下:

    ?

    ?

    [html]?view plaincopy
  • public?class?MySpecialListener?extends?ApplicationContextListener?{??
  • ????@Override??
  • ????public?void?contextInitialized(ServletContextEvent?sce)?{??
  • ????????//?On?Application?Startup,?please…??
  • ????????//?Usually?I'll?make?a?singleton?in?here,?set?up?my?pool,?etc.??
  • ????}??
  • ????@Override??
  • ????public?void?contextDestroyed(ServletContextEvent?sce)?{??
  • ????????//?On?Application?Shutdown,?please…??
  • ????????//?1.?Go?fetch?that?DataSource??
  • ????????Context?initContext?=?new?InitialContext();??
  • ????????Context?envContext??=?(Context)initContext.lookup("java:/comp/env");??
  • ????????DataSource?datasource?=?(DataSource)envContext.lookup("jdbc/database");??
  • ????????//?2.?Call?the?close()?method?on?it??
  • ????????datasource.close();??
  • ????????//?3.?Deregister?Driver??
  • ????????try?{??
  • ????????????java.sql.Driver?mySqlDriver?=?DriverManager.getDriver("jdbc:mysql://localhost:3306/");??
  • ????????????DriverManager.deregisterDriver(mySqlDriver);??
  • ????????}?catch?(SQLException?ex)?{??
  • ????????????logger.info("Could?not?deregister?driver:".concat(ex.getMessage()));??
  • ????????}???
  • ????????dataSource?=?null;??
  • ????}??
  • }??
  • ?

    轉載于:https://www.cnblogs.com/hnucdj/p/4712828.html

    總結

    以上是生活随笔為你收集整理的Tomcat无法shutdown进程问题解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。