I can set the value of the parameter forkCount
to any desired number, say 12, and I'd expect to have 12 new Java processes of type surefirebooter
when running tests like these. But ps
shows that I only sometimes get the 12 expected Java processes (to be precise: I get them extremely rarely). Instead I typically get less, sometimes even only three or four. Execution of my hundreds of unit tests also appears to be slow then.
The running processes also often disappear from the ps
output (terminate, I assume) before the unit tests are done. In some cases all of them, then the execution hangs indefinitely.
Documentation wasn't too clear about this, but I'd expect to have the given number of processes all the time until all unit tests are done.
Maybe the surefirebooter
processes run into some problem and terminate prematurely. I see no error message, though. Where should I see them? Can I switch on some debug logging? Switching on the debug mode of Surefire changed the test results, so I didn't follow that path very far.
I'm running ~1600 unit tests in ~400 classes which takes ~7 minutes in the best case. Execution time varies greatly, sometimes the whole thing terminates after more than an hour.
In some cases, on the other hand, the surefirebooter
processes continue to run after execution finished (successfully) and puts massive load on the system (so it seems to be busy waiting for something).
Questions:
surefirebooter
processes at all times.)surefirebooter
processes? (I tried using strace
but that also changed the behavior so dramatically that the call didn't terminate anymore.)My hypothesis #1 would be that oom_killer
can be the culprit. #2 would be that forked processes go into swap and/or spend crazy amount of time garbage collecting stuff
To debug:
dmesg
or /var/log/messages
for the messages telling about killed processes after the run?jstack
(both for forked processes and the main one) b) quantify massive load on the system
in terms of cpu / memory usage / amount of stuff paged in / paged out--debug
or -X
argument to maven to output debug messages). If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With