Tomcat无法正常关闭

        正常Tomcat开启关闭是使用bin文件夹下的 start.sh和shutdown.sh脚本进行。最近项目中部署无法正常关闭,每次都需要用kill命令关。不太正常,就想研究一下是什么原因导致的。
        使用./shutdown.sh关闭,首先报的问题是9004端口占用。
        1、9004端口占用

        查看9004端口是谁被占用:
        lsof -i:9004
        netstat aux|grep 9004

        显示的pid是Tomcat的。

        后来发现是在配置远程连接的时候,配置了远程端口为9004。

        解决办法: 修改catalina.sh中的JAVA_OPTS为CATALINA_OPTS。

        再./shutdown,问题变为了拒绝连接,看来修改生效了。
        2、java.net.ConnectException: 拒绝连接

       找到tomcat的pid: ps -ef|grep tomcat
       通知tomcat的线程自己停止: kill -3 <tomcatpid>
       再关闭tomcat: ./shutdown.sh

        可以根据上图看到,结果Tomcat关掉了。

        为什么呢?

知识点归纳:

        Tomcat中的JAVA_OPTS和CATALINA_OPTS参数的区别是什么?

        kill -3 <pid> 命令代表什么意义?


总结:

        思考-->验证-->总结-->提高。        



参考文章:
        https://stackoverflow.com/questions/11222365/catalina-opts-vs-java-opts-what-is-the-difference 
        https://stackoverflow.com/questions/13946753/apache-tomcat-shutdown-java-net-connectexception-connection-refused
        http://blog.youkuaiyun.com/shaokai132333/article/details/51714868
        https://stackoverflow.com/questions/10941524/is-my-8080-being-listened
### 安全关闭Tomcat服务器 为了确保Tomcat服务器能够被安全地关闭,建议遵循以下方法: #### 使用命令行工具停止服务 对于大多数操作系统而言,推荐使用`shutdown.sh`脚本来优雅地关闭Tomcat实例。该脚本位于Tomcat安装目录下的`bin/`文件夹中。 ```bash $CATALINA_HOME/bin/shutdown.sh ``` 此命令会发送一个SHUTDOWN信号给正在运行的服务进程,并等待其完成当前处理的任务后再退出[^1]。 如果上述方式未能成功终止Tomcat,则可以尝试强制结束Java虚拟机(JVM)进程中对应的Tomcat实例。但是请注意,在采取这种措施之前应尽可能先尝试正常途径来关闭它,以免造成数据丢失或其他不良影响。 #### 配置自动重启机制 为了避免意外情况发生时无法及时恢复服务,可在操作系统的计划任务或者容器编排平台设置监控策略,当检测到Tomcat异常中断后立即重新拉起新实例[^3]。 #### 设置超时时间参数 有时由于某些原因可能导致默认的停机过程耗时过长甚至卡住,这时可以通过调整环境变量中的`CATALINA_SHUTDOWN_TIMEOUT`值来限定最大允许的时间长度,从而加快整个关闭流程的速度。 ```bash export CATALINA_SHUTDOWN_TIMEOUT=60 ``` 这将把最长等待秒数设为60秒,超过这个时限便会强行终止目标程序。 #### 日志记录与审计跟踪 每次执行手动或自动化手段干预Tomcat生命周期的过程中都应当做好详细的日志文档工作,以便日后排查问题以及满足合规性审查的要求。具体做法是在调用`catalina.sh stop`命令前加上相应的选项开启调试模式并指定输出路径。 ```bash $CATALINA_HOME/bin/catalina.sh stop -debug > /path/to/logfile.log 2>&1 & ``` 以上就是关于如何安全有效地关闭Tomcat服务器的相关指导说明。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值