Configuring Crystal Server’s RAS to scale to 1000s of report views per minute
Customer: Educational Software Company
SAP introduced us to a rapidly growing software company. The reported problem was a with scaling their Crystal Server. The server was using the Report Application Server (RAS) to modify reports on the fly, then present the finished report to the user. We initially expected the problem to be related the use of the Crystal Server SDK, but a code review quickly showed that the integration had been well written.
Next test was to add an additional Report Application Server. This appeared to work, but after a few days the reports started to fail again. We increased the number of servers to nine, but that still only gave a solution that worked for a few days. The only apparent solution was to reboot the server periodically – never ideal.
After much searching, we discovered that there is a problem with RAS whereby some memory fails to be released after viewing a report. This doesn’t matter in the short term, but gradually the server would take the full 2GB of RAM allowed by a 32 bit process. Perhaps we should be glad that RAS isn’t 64 bit!
The final solution was to write a small application that could be scheduled by Crystal Server. The application finds the server that has been running for the longest time, then disables it to prevent it accepting any further requests. Twenty minutes later, once all the report jobs are closed, the server is restarted and enabled. By scheduling this process to run every twenty minutes, all the RAS servers are restarted over the space of nine hours. No users are ever disconnected and all the problems have been solved.
Technologies:
- Crystal Server
- C#