Databases don't get set to single-user because a restore fails. It was probably set to single-user as part of the restore process because restoring a database requires sole access to the database.
Performance problems don't set a database to single-user either.
You should run a SQL trace on the Object:Altered event to determine what is setting the database to single user. Don't guess at it. Find the root problem and then you can fix it.