Windows服務器下,Tomcat製作成服務自啓動,跑不起來,報內存溢出。

最近由於客戶這邊服務器老是要重啓,每次重啓後都需要手動上服務器開啓Tomcat,挺麻煩的,於是想着把Tomcat製作成服務,然後設置開機自啓動,挺簡單的步驟,但是實行起來坑還是有的,於是記錄一下,如下:

  1. 把Tomcat製作成服務的過程
    1. 找到Tomcat的bin目錄,如下圖:
    2. 按住Shift + 鼠標右鍵,選擇在此處打開命令窗口,找到bin目錄下的service.bat文件,把他拖入到命令窗口中,如下圖:
    3. 回車,會提示你輸入如下命令,我們輸入service.bat install(下載安裝服務,service.bat remove:卸載服務),如下圖:
    4. 回車後,會提示如下內容,表示安裝成功:
    5. Win+R,輸入service.msc進入到服務頁面,可以查看到我們安裝好的tomcat服務:
    6. 備註,服務名稱是可以自己修改的,只需要在 service.bat install 命令後加上服務名稱就行,tomcat會有默認的名稱,可以進入bin目錄下的,service.bat進行查看:
  2. 使用服務啓動後,tomcat運行時會拋出各種內存溢出錯誤,於是我第一時間想到的是去修改catalina.bat文件中的內存設置,但是然並卵,於是我又嘗試不用服務,去使用startup.bat文件運行項目是能夠正常跑起來的,是爲什麼呢,這個問題搞了我很久,到處尋找終於找出問題,我們還是可以看下service.bat文件,從下圖看,我們可以大概看懂意思,使用服務運行的時候,我們會執行service.bat文件,然後service.bat會去執行tomcat.exe文件,但是我們正常去運行startup.bat的時候,tomcat回去執行catalin.bat文件,所以由此看來兩種運行方式是不一樣的,於是,得出解決方案:
  3. 打開service.bat文件,找到如下兩個參數--JvmMs(最小內存)、--JvmMx(最大內存) 修改爲自己需要的大小,我們可以看到,圖中,這兩個參數的默認值,我們只需要修改默認值,保存,然後重新安裝服務,這個問題就搞定了。
  4. 如果是在服務已經安裝的情況下,我們不想重新去卸載安裝服務的話,可以選擇直接修改系統註冊表,Win+R,輸入regedit,打開註冊表,

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters\Java  目錄下,如下圖:

  5. 完成完以上操作後,重啓服務,就可以了。

  6. 如果還是java.lang.OutOfMemoryError: PermGen space 增加環境變量 

     JAVA_TOOL_OPTIONS 

    -XX:MaxPermSize=2048m 或者 註冊表新加一個key(這個是查到的,具體沒試過)

以上描述完畢,有什麼問題歡迎溝通。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章