Software is playing a more and more important role in a system, and more and more studies show that system failures are more due to software faults than due to hardware faults. Therefore, software reliability has been one of the hottest research topics. Recently, a phenomenon, "software aging" is reported. In order to counteract this phenomenon, a proactive technique, "software rejuvenation" is presented. In this paper, we attempt to give an investigation on software rejuvenation, including software rejuvenation process, rejuvenation approaches and some practice.