문제

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...

도움이 되었습니까?

해결책

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.

다른 팁

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top