Question

We have a legacy WSE3 ASP.Net webservice here that defines a method GetFileContent(string fileName). What it does is check a predefined path for a file with the passed name, read its content, base64-encode it and send that encoded stuff back as a response.

Unfortunately, the whole process takes (varying) ages. I have written a console client app that benchmarks the performance on demand: Sometimes 2.5Megs are transferred within 12 seconds, sometimes it takes 40. Another 27Meg-file ran through in 16 seconds yesterday, today it took > 1 min.

Further things I have checked:

  • CPU and Swap performance are not worth mentioning (on monitoring, the machine looks bored)

  • network speed is sufficient.

  • The method call is performed immediately after the client has sent the request.

  • The reading and encoding takes an average of 500ms for a big file, so that the return statement is also performed immediately after the request.

  • Another client (Java-based) is even slower, so I guess it could be a client problem.

Does anybody have an idea where to look next to get behind this nasty one? Feels like IIS trouble, really...

Thanks a lot in advance...

Was it helpful?

Solution

First, just to make sure: I hope you're aware that WSE is obsolete.

Second, WSE is based on the ASMX technology. This has problems with large requests, as it will duplicate the incoming data four or more times on the way to the service. However large your data are, assume it will take at least four times as much memory, before the service even gets its hands on it.

The workaround is to upgrade to WCF.

OTHER TIPS

I believe there is no trouble in IIS. I suspect sometimes it took more time for resolving the IP, if shared path path is given instead the actual path.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top