Tomcat之——宕机自动重启和每日定时启动tomcat
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/60587663
在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前的需求。
一、设置tomcat定时启动
1,首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显示名称,一般可使用默认值。
set SERVICE_NAME=Tomcat7 set PR_DISPLAYNAME=Apache Tomcat
【然后修改jvm大小,搜索到--JvmMs 128 --JvmMx 256 进行修改,因为做成服务启动,启动的时候就不会用到 catalina.bat,也就不会读取里面的jvm设置了。】(可选,可以不设置)
然后运行cmd命令窗口,cd 到tomcat的bin目录下,运行下面的命令 service.bat install 运行成功过后,会提示服务已经安装成功。
2,制作重启脚本restart.bat,文件内容如下 net stop Tomcat7 net start Tomcat7
3,利用控制面板里面的“任务计划”设置第2步的脚本运行时间计划
4,如果想删除服务,也很简单,先把服务停掉,然后在cmd窗口运行下面的命令即可,后面那个Tomcat7是服务名。 sc delete Tomcat7
需要注意的是,需要先把服务停掉,才能一次删除成功,或者删除之后再停止服务,就会发现服务已经删除成功了。
二、监听tomcat
只要运行start.bat即可,相关配置在config.properties文件中,默认即可, 如果服务名不对应就修改关闭和启动命令的服务名即可:net start 【Tomcat7】括号中服务名,然后运行start.bat
下面是具体的监听代码:
首先是监听类TomcatMonitor .Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
/*** @describe:TomcatMonitor.java* * @date 2017-03-06* @author liuyazhuang*/
public class TomcatMonitor implements Runnable{String start=""; //系统命令 启动String stop=""; //系统命令 关闭String testHttp=""; //测试连接地址int testIntervalTime=1;//测试连接间隔时间,单位为秒int waitIntervalTime=2; //等待测试间隔时间,单位为秒int testTotalCount=5; //测试连接总次数Thread thread=null;public TomcatMonitor(){InputStream in = TomcatMonitor.class.getResourceAsStream("config.properties");Properties p = new Properties();try {p.load(in);stop=p.getProperty("stop");start=p.getProperty("start");testHttp=p.getProperty("testHttp");testIntervalTime=Integer.parseInt(p.getProperty("testIntervalTime"));waitIntervalTime=Integer.parseInt(p.getProperty("waitIntervalTime"));testTotalCount=Integer.parseInt(p.getProperty("testTotalCount")); } catch (Exception e) {e.printStackTrace();}System.out.println("*******************初始化成功!*******************");thread=new Thread(this);thread.start(); }public void run() {System.out.println("正在监控中..."); int testCount=0;while(true){testCount=0;testCount++; boolean isrun=test();System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!")); while(!isrun){if(testCount>=testTotalCount)break;try {Thread.sleep(testIntervalTime*1000);} catch (InterruptedException e) {e.printStackTrace();}testCount++;System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!")); isrun=test();}if(!isrun){ try{ //关闭tomcat服务 Process proc = Runtime.getRuntime().exec(stop);Thread.sleep(5000);//启动tomcat服务System.out.println("测试连接失败,正在重启tomcat");Process p=Runtime.getRuntime().exec(start); System.out.println("重启tomcat成功");}catch(Exception e){e.printStackTrace();System.out.println("重启tomcat异常,请查看先关错误信息。。。。。");} }try {Thread.sleep(waitIntervalTime*1000);} catch (InterruptedException e) {e.printStackTrace();}isrun=test();} }public boolean test(){URL url=null; try {url = new URL(testHttp);} catch (MalformedURLException e) {e.printStackTrace();}try {URLConnection urlConn=url.openConnection();urlConn.setReadTimeout(15000);BufferedReader reader = new BufferedReader(new InputStreamReader( urlConn.getInputStream())); //实例化输入流,并获取网页代码String s; while ((s = reader.readLine()) != null) {return true; } } catch (Exception e) {return false;}return false;}public static void main(String[] args) throws Exception{TomcatMonitor tm=new TomcatMonitor();}}
然后是对应的配置文件config.properties:
#系统命令 启动
start=net start Tomcat7#关闭
stop = net stop Tomcat7#测试连接总次数
testTotalCount=3#连接失败时,再次检测时间间隔,单位为秒
testIntervalTime=3#连接超时时间,即多少秒tomcat没响应视为宕机,单位为秒
connectionTimeout=15#tomcat启动时间,防止在tomcat尚未启动完成的时候,程序又去检验tomcat状态,造成尚未启动完成又重新启动,单位为秒
tomcatStartTime=600#测试连接地址
testHttp=http://127.0.0.1:8080#正常情况下,每次检测间隔时间,单位为秒
waitIntervalTime=30
最后是启动的start.bat:
java -cp . TomcatMonitor
Tomcat之——宕机自动重启和每日定时启动tomcat相关推荐
- tomcat宕机自动重启和每日定时启动tomcat
在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前 ...
- tomcat宕机自动重启和每日定时启动tomcat【工具包系列】
在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前 ...
- java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒
最近由于老项目频繁挂掉,由于项目经过多批人之手,短时间难以定位问题,所以只好写一个监控程序. 时间比较紧半天时间,而且水平有限大神勿喷,有好的方法还请赐教. 1.问题描述:分两种情况1.1.tomca ...
- 服务器宕机 自动重启,服务器宕机重启利弊
由于资源有限.操作不当.系统错误等多种原因,常会导致服务器宕机.并且大多服务器宕机状况的出现,唯快速有效的解决方法就是,重启服务器,那么服务器宕机重启利弊有哪些呢?下面就一起随佰佰安全网小编来了解一下 ...
- php监测tomcat,java_JAVA实现监测tomcat是否宕机及控制重启的方法,本文实例讲述了JAVA实现监测tom - phpStudy...
JAVA实现监测tomcat是否宕机及控制重启的方法 本文实例讲述了JAVA实现监测tomcat是否宕机及控制重启的方法.分享给大家供大家参考.具体如下: Detector.java: import ...
- java 宕机监控_JAVA实现监测tomcat是否宕机及控制重启的方法
本文实例讲述了JAVA实现监测tomcat是否宕机及控制重启的方法.分享给大家供大家参考.具体如下: Detector.java: import java.net.URL; import java.n ...
- 手写tomcat监控工具---宕机重启
2019独角兽企业重金招聘Python工程师标准>>> 使用前提: 1.打成jar包,并在控制台运行:java -jar TomcatMonitorUtil.jar 2.需要配置to ...
- 解决生产环境一次tomcat无故宕机的诡异问题
文章目录 前言 一.问题描述 二.排查步骤 1.先排查一下是不是代码的不规范导致JVM内存溢出 1.先用jstat -gc 命令查看下内存使用情况 2.使用jmap 查看下内存配置 通过以上发现内存使 ...
- 服务器宕机自动dns,有哪些同时支持智能解析和宕机自动切换的DNS服务?
RT 可以支持按区域.运营商线路智能解析,服务器宕机自动切换解析. 免费或者价格不太高的. 目前了解到华为云完全免费,唯独没有宕机监控. DNSPOD如果想实现上述功能,套餐价格不菲-- 求大佬们推 ...
最新文章
- ImageMagick简单记录
- 10进制与16进制之间的转换 delphi
- Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别
- java.policy无法修改_如何配置Policy文件进行Java安全策略的设置
- a jni error has occurred_A-08 幂函数、有理函数、代数函数
- Android 数据库框架 DBFlow 的使用
- 双赢思维的五个要领_可访问网站双赢的4个原因
- mysql在linux下备份还原,Linux下MySQL的备份与还原
- 基于LAMP的cacti安装和配置问题处理(一)
- go导出mysql中的excel表,MySQL导出数据,并转存到Excel表格中
- SpringMVC中解决POST和GET请求中文乱码问题
- PHP培训领航者兄弟连IT教育推出兄弟会教育模式
- 51单片机的红外遥控
- mdf文件和ldf文件是什么?
- iOS加速器简单介绍
- Cognos资料整理
- python基础之输入输出语法
- Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
- 恭喜元宇宙产业委秘书长何超、执行秘书长武艳芳成为南京河西CBD发展大使
- 力扣 387. 字符串中的第一个唯一字符 C语言实现
热门文章
- Dictionary(字典)
- 蓝桥杯的c语言编译器,第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组比赛心得(还在更新)...
- winfows 切换 双屏_Win10系统如何设置双屏显示?windows10设置双屏显示的方法
- 【C++】相对路径与绝对路径以及斜杠与反斜杠的区别
- 线上运行的项目突然变得很卡如何排查?
- 单页面应用——SPA
- 已知两边和夹角求第三边长_已知任意三角形的两边和夹角,怎样用三角函数求出第三边的长度...
- glob.glob()函数
- POI在指定excel插入行java
- 资深技术专家推荐:如何写复杂业务代码-阿里实践