1. A method of process recovery in a distributed environment, comprising: determining a last known good state; storing the last known good state in persisted data; detecting a process heartbeat associated with a first instance of a process, said process having services; determining that said process has failed if said heartbeat was not received at a predetermined next heartbeat time; ascertaining if said process was incorrectly determined as failed by comparing an identifier associated with said first instance of said process with an identifier in a database table; releasing resources associated with said process; and starting a second instance of said process and said services from a last known good state of said first instance of said process.