Reputation: 11652
I have developed a asp.net web service and deployed on IIS 7.5 and windows 2008 R2 64 bit.
All requests comes from Biztalk to this web services. This web service working good if Biztalk sends couple of requests at time. But if BizTalk sends thousands of records in seconds my web service is not handling and send Request TimeOuts
error back to BizTalk.
I am not understanding how to handle this situation. Gurus please give me idea.
Upvotes: 0
Views: 1416
Reputation: 88044
There are three areas you need to figure out.
The first is how to increase the throughput of your webservice itself. Profile it and see what you can trim out. Is it making multiple database calls when a single one will do? Is it writing stuff to a slow harddrive (fix: replace drive with faster mechansim)?.. Essentially try and figure out why your service only handles a limited number of simultaneous calls. This may involve moving away from XML based services to those based on json or another limited format. It might involve getting rid of various scaffolding crap (like asmx, wcf, etc) in favor of simple REST based generic handlers. Regardless, you will have to profile the service to find out what it's sticking point is.
Next see if you can set up additional machines to host the web service and establish load balancing. This might be the best way to go.
Third, (regardless of whatever the above finds) you need to determine what the safe traffic level is and have Biztalk throttle it's own connections. If after doing everything you can to increase throughput you find that 200 simultaneous requests is it, then throttle Biztalk to only send up to 200 simultaneous.
Upvotes: 1
Reputation: 1
There are also configuration settings in machine.config to allow you to speed up the asp web service with additional threads. There's several articles you can fund on what the optimum setting should be based on the number of CPUs on your server. If you need to throttle BizTalk that is in the btssvc.config I believe.
Upvotes: 0