This does not address the GC aspects of this, but you have some
operational tools to help in this situation.
If you want your apps to be highly-available, then you are using a
load balancer and multiple instances. After redeploying the app you
can, one at a time, remove an instance from the load balancer set, let
that server reach a quiescent state, restart just that instance, then
add it back into the load balancer set and continue on with the next
server.
Clearly this is not nearly as convenient as just redeploying the app,
to be sure, but it does help with the "1:00 a.m." problem. And,
depending on where your users are, 1:00 a.m. for some can be the
middle of the workday for others.
- Tim
On May 11, 2011, at 8:51 AM, matthias.fraass_at_tricoder.net wrote:
> Hi Folks,
>
> sad but true: One of the important features of a app server - to
> redeploy one application while the others are still running - has
> been defeated by this :(. I just can't trust on "I guess PermGen
> space will be enough after this redeployment" in a production
> environment.
>
> So this bug (more of a GC design error...) made us restart our
> production app servers after every redeployment.
> Which means we can only restart it at 01:00 am.
> Which means that there are no monitored redeployments during office
> times.
>
> That was really a big disappointment in JEE.
>
> -Matthias