We have a legacy Java web application which we deploy to a Windows Server 2012 machine using an executable file and need to increase its memory pool size, since we get a lot of Out of memory exceptions.
It creates its own folders on Program Files including tomcat bin folder and a Windows service named "Apache Tomcat servicename" which is basically Tomcat version 6 but when I try to edit its Java options through tomcat6w.exe it says that this service is not installed on the system.
Is there a way to change the tomcat service being used by the application to a tomcat service installed from http://tomcat.apache.org/
Or maybe edit the service.bat (or any other file?) when creating the executable to hardcode the memory pool size there?
There is a line in service.bat like below:
"%EXECUTABLE%" //US//%SERVICE_NAME% ++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" --JvmMs 128 --JvmMx 256
The solution was to edit the Tomcat RAM usage through Registry by running regedit
, browsing to:
HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ApacheSoftwareFoundation >
Procrun 2.0 > apache-tomcat > Parameters > Java
and editing following values:
JvmMs REG_DWORD 0x00000800 (2048)
JvmMx REG_DWORD 0x00001000 (4096)
The above applies when Tomcat is installed as a Windows Service and through a custom executable file and there is no access to its configuration through the tomcatxw.exe
manager.