问题背景:近日生产环境中的tomcat服务崩溃,导致系统不可用。于是提出了使用nssm来管理tomcat服务,即nssm服务为tomcat的守护线程,当tomcat服务崩溃停止之后,nssm服务会马上重启tomcat服务,当然这个重启的时间可以设置。
操作步骤:
1.目前生产上使用的是解压版的tomcat服务,所以先要注册tomcat服务。使用cmd命令进入bin目录,然后输入以下命令:service.bat install serviceName. 其中serviceName可以不用写,那么就用的默认的。 注册完之后,启动任务管理器,上面会出现你注册的服务。
此时可以验证一下,点击tomcat8.exe ,看是否能够启动tomcat,如果能够启动,则可以进行下一步操作。如果不能够启动,则可能需要修改tomcat8.exe的名称与上面注册的serviceName的名称一致,为serviceName.exe . 然后再次启动,应该就能启动了。
注销安装的服务可以采用如下命令: service.bat uninstall serviceName.
2.将下载的nssm压缩包解压之后,使用cmd进入到nssm.exe所在的文件夹,输入以下命令注册nssm服务:nssm install nssmService. 此时会弹出一个操作界面,需要选择相应的tomcat8.exe,然后点击installl 按钮,完成注册。注册完之后会在任务管理器上看到相应的服务名称。 此时可以理解,这里的nssmService就是在管理tomcat8.exe这个程序,启动了nssmService之后,它就会去调用tomcat8.exe , 进而达到启动tomcat的目的。
3. 当完成1和2的操作之后,此时就可以使用nssm来启动tomcat服务了。使用cmd进入到nssm.exe所在文件夹(为了方便使用可以将nssm.exe所在路径配置到path环境变量中),输入以下命令启动nssm服务:nssm start nssmService。 服务启动之后,tomcat服务也会相应的启动,当你在进程中把tomcat服务杀掉之后,它又会马上启动tomcat服务,以达到守护线程的目标。
关闭nssm服务命令: nssm stop nssmService 。 当关闭此服务时,对应的tomcat服务也会停止。
移除nssm服务命令: nssm remove nssmService。
编辑nssm服务命令: nssm edit nssmService。
备注:当执行关闭nssm服务命令时,报了一个错:
unexpected status service_stop_pending in respense to stop control
但是tomcat服务确实是停止了,目前还没查到报这个错的原因以及是否后续有影响。
4. 当执行完1、2、3点之后,tomcat服务其实就是三种启动方式了。第一种直接选中任务管理器中注册的tomcat服务右键启动。第二种点击tomcat8.exe进行启动。第三种启动nssm服务来达到启动tomcat服务的目的。其中一点需要注意,当tomcat服务被注册之后,以前点击startup.bat的启动方式则不可用。
nssm下载路径:http://www.nssm.cc/release/nssm-2.24.zip
参考文章:
windows环境下nssm配置tomcat守护进程:windows环境下nssm配置tomcat守护进程_windows为tomcat添加守护_stellar2020的博客-CSDN博客
windows下Tomcat免安装版NSSM使用:windows下Tomcat免安装版NSSM使用_被撞傻的杰的博客-CSDN博客
使用NSSM注册Windows服务:https://www.cnblogs.com/lichu-lc/p/10263799.html