-
Notifications
You must be signed in to change notification settings - Fork 738
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
-Xdump:heap creates heapdump on kill -3 causing issues with performance data gathering #15297
Comments
There is no heap dump agent by default other than for OutOfMemory. The option
i.e. The
You can change the default events via
To see all the dump agents in affect after setting options, use @keithc-ca fyi |
I don't think we should have to have clients add things like -Xdump:heap:defaults:events=gpf or -Xdump:heap:defaults:file=heapdump,events=gpf then add their -Xdump:heap:label. If there is no -Xdump:heap, then a heapdump is not created on kill -3, so just adding -Xdump:heap:label shouldn't change the behavior of kill -3, it should just create heapdumps on OOM's per the "label". |
Why is |
We prefer they not do this and we discourage them at every opportunity, but some clients have adopted some settings we don't like I think because heapdumps didn't used to be so easy to get "settings like JAVA_DUMP_OPTS...., or IBM_HEAPDUMP=true". Some are extremely resistant to removing these. It doesn't change the fact that setting it shouldn't change the behavior when performing kill -3. |
Below are my observations after testing:
So if customer would like to change default file name settings, then setting above options will do the job without generating any dumps on user event.
And the default events set for heapdump are shown below, which is why on user event heap dump is getting generated
To answer your question This is because default settings for system dump has no user event set which is why no coredump is generated on user event
It is important that we understand what customer would like to achieve using the options specified in point 2 above, If their requirement is only to have their label/file name settings modified then it is recommended to use the options specified in point1 as per the documentation. |
Hi Ravali, thank you very much for the detailed explanation. Closing this item. |
1)We are trying to find the difference between Xdump 2)Noticed that there was an issue raised to change the heap dump defaults #520. And through the PR #563 the defaults for heap dump has changed from Above change is reverted back through #4257 Could we also get more details on why the PR change was reverted back, Are there any implications?(From the service perspective we don’t see a need for a heap dump on gpf event, shouldn’t it be on systhrow?) |
#563 was reverted because it was only supposed to fix the help output to match the defaults, but it changed the behaviour. There is no reason given for the revert, I'm not sure if it was a service issue or just something Keith noticed. |
Thanks @pshipton.
From the Dump agent suboptions table, could see below but this is not just updating the file name it’s actually adding defaults set for the agent as well.
For eg:
And similar behaviour is observed for other Dump agent suboptions in the table:
@pshipton Could we have this information updated in the documentation i.e if no events are specified explicitly then defaults for the corresponding agent will be added? |
Created eclipse-openj9/openj9-docs#970 |
@pshipton - Does this require any change in the document? If yes, then could you please let me know how I can differentiate between the 'file' and 'label' options? Thanks! |
The document shows |
Document update has been done (eclipse-openj9/openj9-docs#970 - closed). This item can be closed. |
Could we get that changed to not trigger the heapdump on kill -3?
Some clients are setting up JVM arguments like this:
-Xdump:heap:defaults:file=heapdump.%Y%m%d.%H%M%S.%pid.%seq.phd
-Xdump:system:defaults:file=core.%Y%m%d.%H%M%S.%pid.%seq.dmp
or this:
-Xdump:system:label=PRDWSCSCC306.aoins.com.WPCCSCC306A1.%Y%m%d.%H%M%S.%pid.%seq.dmp
-Xdump:java:label=PRDWSCSCC306.aoins.com.WPCCSCC306A1.%Y%m%d.%H%M%S.%pid.%seq.txt
-Xdump:heap:label=PRDWSCSCC306.aoins.com.WPCCSCC306A1.%Y%m%d.%H%M%S.%pid.phd
The "-Xdump:heap" args will cause a heapdump to be created on every kill -3. Our standard MustGather scripts for Linux and AIX perform a kill -3 every 30 seconds, but we often need clients to reduce that to a much smaller number, so the heapdump generations and accompanying global gc's are extremely disruptive when gathering performance data with our MustGather scripts and can bring a client's JVM down.
"-Xdump:system" doesn't cause a core dump to be created on kill -3, so why does "-Xdump:heap"?
For a standalone java process, if someone needs a heapdump on kill -3 could add and environment variable "export IBM_HEAPDUMP=TRUE".
In WebSphere, if they need to create a heapdump manually they have two good options:
Via the Admin Console per "Collecting Java dumps and core files using the administrative console"
https://www.ibm.com/docs/en/was-nd/8.5.5?topic=ts-collecting-java-dumps-core-files-using-administrative-console
Using wsadmin per "Generating heap dumps manually"
https://www.ibm.com/docs/en/was/8.5.5?topic=generation-generating-heap-dumps-manually
In Liberty, they can run:
server dump server_name --include=heap
The text was updated successfully, but these errors were encountered: