[ https://issues.apache.org/jira/browse/DAEMON-412?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mark Thomas resolved DAEMON-412. -------------------------------- Fix Version/s: 1.2.3 Resolution: Fixed This has been implemented (and tested) for Procrun and jsvc. > Tomcat started as windows service does not support Java Native Memory > Tracking feature probably because of improper JVM initialization by Procrun > ------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: DAEMON-412 > URL: https://issues.apache.org/jira/browse/DAEMON-412 > Project: Commons Daemon > Issue Type: Bug > Components: Procrun > Environment: Windows generally (tested on Windows Server 2012 R2 but > the problem occurs probably, like the user in the internet write, on every > Windows version) > Reporter: Artur Linhart > Priority: Major > Fix For: 1.2.3 > > > In the case the user specifies some from the the NativeMemoryTracking > parameters (see > [https://docs.oracle.com/en/java/javase/11/vm/native-memory-tracking.html#GUID-0DB3B8D1-8D7D-447F-B6FF-15620103EE47 > > |https://docs.oracle.com/en/java/javase/11/vm/native-memory-tracking.html#GUID-0DB3B8D1-8D7D-447F-B6FF-15620103EE47] > ) like > -XX:NativeMemoryTracking=summary > in Windows service registry, restarts the service, so the option can be seen > in the log file by the startup options (for example in Tomcat logs like > catalina.log), then the Native memory tracking is still disabled and does not > work. If you try with > jcmd <pid> VM.native_memory summary > to get the information about the native JVM memory in the tomcats JVM, the > jcmd call fails with the message > <pid>: > Native memory tracking is not enabled > and in the Tomcat's log file can be found following error message: > Java HotSpot(TM) 64-Bit Server VM warning: Native Memory Tracking did not > setup properly, using wrong launcher? > The problem seems to be in the JVM launcher Procrun, which dies not > initialize the JVM properly - as far as I have understood from this blog: > [https://blogs.oracle.com/poonam/using-nmt-with-custom-jvm-launcher > |https://blogs.oracle.com/poonam/using-nmt-with-custom-jvm-launcher] > The Procrun.exe has to define some environment variable before the start of > JVM, etc. to get the native memory tracking to work. > Known workaround is the start of Tomcat from the command line, but this is no > option in the productive environment, where you have to let the service run > for longer time to collect the proper result and maybe also as some different > user because of security concerns, then such option is simply out of possible > scenarios. So the Tomcat service JVM cannot be in such circumstances tracked > by NMT at all, what is the problem in the mission-critical applications. > The Procrun should be modified in the way it enables the NMT in the windows > service by the startup, by setting the environment variable > NMT_LEVEL_<pid> to the value "detail" or "summary" (or "off" if unspecified) > in the dependency on the specified or unspecified option of > -XX:NativeMemoryTracking > like done normally by java.exe > Remark: Also change of the startup mode from "jvm" to "exe" or "java" does > not help,. then the windows service does not start at all. > See also the Tomcat bug > [https://bz.apache.org/bugzilla/show_bug.cgi?id=63922|https://bz.apache.org/bugzilla/show_bug.cgi?id=63922] > which has been qualified as invalid because the problem seems to be in is in > PROCRUN. > See also the bug [TOMEE-2738] > This will probably affect every java app handled by the Procrun Daemon, if > installed and started as Windows service, not only Tomcat. -- This message was sent by Atlassian Jira (v8.3.4#803005)