tomcat居然会有用shutdown脚本关不掉的时候,请教正确的重新启动姿势

abcbuzhiming 2013-06-07 02:04:24
今天早上更新了一下应用,shutdown.sh,再start.sh,然后发现所有的应用都无法访问了,就是没反应,也不回应拒绝访问等错误信息,就僵死在那里,检查了半天才发现在shtdown.sh后,仍然有进程在监听8080端口,导致重新启动tomcat时无法绑定端口而失败,继续google发现原来很多情况都能造成tomcat无法关闭线程(最典型的就是用了ssh框架)的情况,手动杀线程后搞定问题,但是这个问题实在太不爽了,我的tomcat是需要经常重启来更新测试应用的,这经常僵尸太不爽了,求正确的安全重启tomcat方法
...全文
603 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcbuzhiming 2013-06-08
  • 打赏
  • 举报
回复
引用 3 楼 beiouwolf 的回复:
楼上2个...强关不解决核心问题... 关不掉tomcat,你得首先查代码 是不是有线程卡死了 是不是有socket卡死了 等等,关不掉不是tomcat的错,是你开发人员的错!
一个很简单的用ssh实现的bs框架,在前台页面对一个数据库实现crud而已,完全是照搬教科书,这样的程序到底有什么问题呢?而且这个情况不是每次都出现的,就是偶尔才有
木薯超人 2013-06-08
  • 打赏
  • 举报
回复
我也是LINUX上面关很慢,会出现假死的情况,实际上那个应用文件夹不知道被那个进程占用呢!·
kittaaron 2013-06-07
  • 打赏
  • 举报
回复
引用 3 楼 beiouwolf 的回复:
楼上2个...强关不解决核心问题... 关不掉tomcat,你得首先查代码 是不是有线程卡死了 是不是有socket卡死了 等等,关不掉不是tomcat的错,是你开发人员的错!
3楼说的有道理,我也碰到这种情况。代码里面起后台线程的情况比较多,我有点懒,不大愿意花工夫去找原因,基本上就是程序里有线程占用资源,退不掉,就导致tomcat退不出了。 不过个人觉得tomcat本身的处理也是有问题的,shutdown失败不会有任何提示,再startup还会成功,我有时候就是猛然发现tomcat运行了一批实例.jetty在这方面做得比较好,在启动或者停止脚本里面加一个循环,用PS来看进程是不是还在,其实也不是很麻烦的事,tomcat就没处理这种情况。
beiouwolf 2013-06-07
  • 打赏
  • 举报
回复
楼上2个...强关不解决核心问题... 关不掉tomcat,你得首先查代码 是不是有线程卡死了 是不是有socket卡死了 等等,关不掉不是tomcat的错,是你开发人员的错!
qiunet 2013-06-07
  • 打赏
  • 举报
回复
sorry.没看全. 代码方面没有经历过.不知道怎么正. 提供个思路.你可以写个脚本.执行kill这步.就行了. shell脚本完全可以shutdowm.sh 然后 kill pid ,然后重启.
qiunet 2013-06-07
  • 打赏
  • 举报
回复
会有线程占用之前端口. 一般servlet timer写的代码会比较容易出现. 解决方法是 : ps -aux | grep tomcat目录名称 会有

qiunet    8476  0.7 11.4 584396 237248 pts/0   Sl   12:28   0:47 /usr/bin/java -Djava.util.logging.config.file=/usr/local/app/tools/fish_test/conf/logging.properties -Djava.awt.headless=true -Xms128M -Xmx256M -server -XX:PermSize=64M -XX:MaxPermSize=128M -XX:+PrintGCDetails -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/app/tools/f_test/endorsed -classpath /usr/local/app/tools/f_test/bin/bootstrap.jar -Dcatalina.base=/usr/local/app/tools/f_test -Dcatalina.home=/usr/local/app/tools/f_test -Djava.io.tmpdir=/usr/local/app/tools/f_test/temp org.apache.catalina.startup.Bootstrap start
第二个(8476)是pid 然后 kill -9 pid .再重启就行了
Re:CCNA_CCNP 思科网络认证 静态路由(默认路由、路由汇总、浮动路由、热备份路由协议(HSRP))======================# 本章内容        网络畅通的条件        静态路由                实战 1. :配置静态路由                实战 2. :搭建网络负载均衡实验环境                实战 3. :添加等价路由实现网络负载均衡                实战 4. :静态路由的高可用HA方案(同时具有负载均衡的功能)        路由汇总(计算机网络原理:第06章 静态路由和动态路由)        默认路由(计算机网络原理:第06章 静态路由和动态路由)        Windows上的路由表和默认路由(计算机网络原理:第06章 静态路由和动态路由)        浮动路由        热备份路由协议(HSRP) # 网络排错        明白了网络畅通的条件,网络排错就变得简单了。        先检查数据包是否能够到达目标网络        再检查数据包是否能够返回来。        如果网络不通,您就要检查计算机是否配置了正确的IP地址子网掩码以及网关,再逐一检查沿途路由器上的路由表,查看是否有到达目标网络的路由;然后逐一检查沿途路由器上的路由表,检查是否有数据包返回所需的路由。 # 静态路由        想实现全网通信,也就是网络中的任意两个节点都能通信,这就要求每个路由器的路由表中必须有到所有网段的路由。        对于路由器来说,它只知道自己直连的网段,对于没有直连的网段,需要管理员人工添加到这些网段的路由。        管理员人工添加到某个网段如何转发,就是静态路由。        后面还讲到配置网络中的路由器使用动态路由协议(RIP、IEGRP、OSPF)自动构建路由表,就是动态路由。 # 浮动静态路由 即指定路由的优先级,低等级备用 # 思科热备份路由协议(HSRP)实现网关的冗余        HSRP(Hot Standby Router Protocol热备份路由器协议)是Cisco的专有协议。HSRP把多台路由器组成一个“热备份组”,形成一个虚拟路由器。        HSRP路由器利用Hello包来互相监听各自的存在。当路由器长时间没有接收到Hello包时,就认为活动路由器故障,备份路由器就成为活动路由器。HSRP协议利用优先级决定哪个路由器成为活动路由器。如果一个路由器的优先级比其它路由器的优先级高,则该路由器成为活动路由器。路由器的默认优先级是100。在一个组中,最多有一个活动路由器和一个备份路由器。HSRP路由器发送的组播(224.0.0.2)消息有以下三种:        Hello:通知其它路由器发送者的HSRP优先级和状态信息,HSRP路由器默认每3秒发送一个Hello消息。        Coup:当一个备用路由器变为一个活动路由器时发送一个Coup消息。        Resign:当活动路由器要当机或者当有优先级更高的路由器发送Hello消息时,主动发送一个Resign消息。 # 热备份路由协议(HSRP)设置跟踪端口        跟踪[R1]的interface s1/0 如果该端口shutdown,则该路由器优先级降低40指标 或称为间隔路由器跟踪---------------------------------------------       

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧