Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。

最近由于客户这边服务器老是要重启,每次重启后都需要手动上服务器开启Tomcat,挺麻烦的,于是想着把Tomcat制作成服务,然后设置开机自启动,挺简单的步骤,但是实行起来坑还是有的,于是记录一下,如下:

  1. 把Tomcat制作成服务的过程
    1. 找到Tomcat的bin目录,如下图:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第1张图片
    2. 按住Shift + 鼠标右键,选择在此处打开命令窗口,找到bin目录下的service.bat文件,把他拖入到命令窗口中,如下图:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第2张图片
    3. 回车,会提示你输入如下命令,我们输入service.bat install(下载安装服务,service.bat remove:卸载服务),如下图:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第3张图片
    4. 回车后,会提示如下内容,表示安装成功:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第4张图片
    5. Win+R,输入service.msc进入到服务页面,可以查看到我们安装好的tomcat服务:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第5张图片
    6. 备注,服务名称是可以自己修改的,只需要在 service.bat install 命令后加上服务名称就行,tomcat会有默认的名称,可以进入bin目录下的,service.bat进行查看:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第6张图片
  2. 使用服务启动后,tomcat运行时会抛出各种内存溢出错误,于是我第一时间想到的是去修改catalina.bat文件中的内存设置,但是然并卵,于是我又尝试不用服务,去使用startup.bat文件运行项目是能够正常跑起来的,是为什么呢,这个问题搞了我很久,到处寻找终于找出问题,我们还是可以看下service.bat文件,从下图看,我们可以大概看懂意思,使用服务运行的时候,我们会执行service.bat文件,然后service.bat会去执行tomcat.exe文件,但是我们正常去运行startup.bat的时候,tomcat回去执行catalin.bat文件,所以由此看来两种运行方式是不一样的,于是,得出解决方案:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第7张图片
  3. 打开service.bat文件,找到如下两个参数--JvmMs(最小内存)、--JvmMx(最大内存) 修改为自己需要的大小,我们可以看到,图中,这两个参数的默认值,我们只需要修改默认值,保存,然后重新安装服务,这个问题就搞定了。Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第8张图片
  4. 如果是在服务已经安装的情况下,我们不想重新去卸载安装服务的话,可以选择直接修改系统注册表,Win+R,输入regedit,打开注册表,

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java  目录下,如下图:Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第9张图片Windows服务器下,Tomcat制作成服务自启动,跑不起来,报内存溢出。_第10张图片

  5. 完成完以上操作后,重启服务,就可以了。

  6. 如果还是java.lang.OutOfMemoryError: PermGen space 增加环境变量 

     JAVA_TOOL_OPTIONS 

    -XX:MaxPermSize=2048m 或者 注册表新加一个key(这个是查到的,具体没试过)

以上描述完毕,有什么问题欢迎沟通。

 

你可能感兴趣的:(Tomcat)