Our concerns about rendering that amount of pages are already known. My colleague has explained them here. Performance Considerations- the updated link to our performance considerations article, where you can find suggestions how to optimize the report.
Our suggestion is to determine the amount of data that can be rendered without exception (on trial-error basis). Then use an ObjectDataSource and in the data retrieval method check the amount of data before passing it to the report. If the amount is to large, reduce it via filtering and report parameters, or cease the further processing by throwing an exception for the current user.
In the method you can include any custom logic that can help you prevent the system from malfunctioning if it is too busy.
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.