@Edwin - When you say your application pool is restarting every 20 to 30 minutes, I have to wonder if it is due to the settings in your application pool.
If you open IIS, click on Application Pools node on the left, and then right-click on the application pool and select "Advanced Settings...".
Within this setting dialog I recommend modifying two settings if you have not done so already...
These are the two settings I can think of off the top of my head. Let me know if this helps.
I agree with Craigs first point. Except the Idil Time out means that the application will be unloaded from memory if there is no activity for 20 minutes. When someone accesses the site after this time then you get the site fired up again and the Sitefinity Int process has to go through it's start up.
For the Regular time interval I would not suggest to set it to zero. Allowing the app pool to recycle helps clear out any threads that have become orphaned or memory that has not been able to be cleared by the GC.
But I would recommend to set it to a particular time. A low activity period such as 1 am every day.
This won't cause a Sitefinity init process because IIS actually fires up a second process and directs all new requests to it and closes the old one when its finished. But during this process the application is not unloaded from memory.