Hi WE use a third party report tool. Report tool uses active-x. At first we generate and run a query accırding to filters, then one report file is created which inculdes the data (result of the query). Then client downloads the report file. But file written operation is a big problem for us. What can we do? Taking file written operations into another application and taking this application into another application pool can be a solution? Do you have any suggestion? And how the web server operates,runs? For example there are 100 clients which connects to web server and they are trying to run some reports. So web server must create 100 files for these clients. So if a report data is very huge and do others wait for its completion?
Your problem is not very clear. You said writing file is a big problem, what do you mean by that? Is it slow or what?
Is your application designed to serve one client at a time? If not then why you saying others wait for its completion?
I assume your application can serve multiple clients at a time. If the load is high writing of file will be affected as IO will slow down. You need to load balance the application where load gets divided between the instances and that way IO can be improved. Of course instances should be on different machines as the problem is of IO. There could be some other issues as well that the logic is CPU intensive as well as memory hungry. You need to profile your app to find all the issues.
For large reports you can put the requests into a processing queue and have your customers wait a few minutes for it to be ready. Instant report generation for large data sets puts a lot of strain on your system, and is hard to load balance.
Perhaps have your web site forward requests to a queue that will eventually be processed by separate report generating servers. You can add more of these servers to process items in the queue, and this processing will not affect the website users, they will just have to live with reports not being instant.
Also think of processing that you can do before hand so that all the processing isn't 'on demand'. If they have the same reports every day, allow it to be scheduled, so your clients don't feel like they are waiting too long for reports.
Heavy IO should be offloaded to servers that are not processing client web requests.