zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chris Nauroth (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ZOOKEEPER-2185) Document recommendation to use -XX:HeapDumpOnOutOfMemoryError and -XX:OnOutOfMemoryError="kill %p" for server.
Date Wed, 20 May 2015 22:50:59 GMT

     [ https://issues.apache.org/jira/browse/ZOOKEEPER-2185?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Chris Nauroth updated ZOOKEEPER-2185:
    Attachment: ZOOKEEPER-2185.001.patch

I'm attaching a patch that sets these options in zkServer.sh and zkServer.cmd and also updates

The syntax for referring to the pid on Windows might look a little strange, so here is an
explanation.  The {{%}} character is reserved in cmd syntax for referring to variables: {{%1}},
{{%2}}, etc.  We don't want cmd to try to interpret {{%p}} as a variable.  Instead, we want
that literal passed right into Java, which will replace it with the pid.  To escape it, you
use two {{%}} characters next to each other.  That gives us {{%%p}}.  However, we need this
to survive 2 cmd invocations: once for execution of zkServer.cmd and a second time when Java
executes it through {{cmd /c}}.  That means we need to double-escape, which then gives us
the final result of {{%%%%p}}.

To test this, I faked a change in {{QuorumPeerMain#main}} to keep allocating memory in a tight
loop until it triggered an {{OutOfMemoryError}}.  I saw that it dumped an hprof file and killed
the process.  I did this test on both Linux and Windows.

> Document recommendation to use -XX:HeapDumpOnOutOfMemoryError and -XX:OnOutOfMemoryError="kill
%p" for server.
> --------------------------------------------------------------------------------------------------------------
>                 Key: ZOOKEEPER-2185
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2185
>             Project: ZooKeeper
>          Issue Type: Improvement
>          Components: documentation
>            Reporter: Chris Nauroth
>            Assignee: Chris Nauroth
>            Priority: Minor
>         Attachments: ZOOKEEPER-2185.001.patch
> Continuing to run a server process after it runs out of memory can lead to unexpected
behavior.  This issue proposes that we update documentation to recommend adding these JVM
> # {{-XX:HeapDumpOnOutOfMemoryError}} for help with post-mortem analysis of why the process
ran out of memory.
> # {{-XX:OnOutOfMemoryError="kill %p"}} to kill the JVM process, under the assumption
that a process monitor will restart it.

This message was sent by Atlassian JIRA

View raw message