When should long-running software be restarted?

Software that runs for a long time grows unstable as fragmented memory and consumed resources accumulate. This is software ageing. One remedy is to restart the system deliberately, before it breaks: software rejuvenation.
Restart too early and you waste availability by stopping a healthy service; restart too late and it fails first. An optimal interval lies somewhere in between.
This work represents the degradation process with a stochastic model and gives a method for estimating the rejuvenation timing that maximises availability. Its distinguishing feature is that the schedule is obtained directly from observed data, without assuming a distribution in advance. It is one of the most cited results from our laboratory.
Source paper
Estimating software rejuvenation schedules in high-assurance systems
The Computer Journal (2001)