0

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.

John Saunders
  • 160,644
  • 26
  • 247
  • 397
James123
  • 11,184
  • 66
  • 189
  • 343
  • 1
    I suppose BizTalk should have some kind of configuration of throttling to help you spread requests in time. – Sly Mar 05 '12 at 17:52
  • This seems a bit vague. Are you looking to speed up the web service (and, thus, how many requests it can handle quickly), or are you looking to slow down / throttle how many requests BizTalk is sending (@Sly mentioned)? – Josh Darnell Mar 05 '12 at 17:59
  • I think the right way is to slow how many requests are sent from BizTalk – Sly Mar 05 '12 at 18:00
  • I am looking any configuration on IIS end. Will WCF TCP/IP protocal works?. It is internal network. – James123 Mar 05 '12 at 18:01
  • 3
    The right way to do this is to not use an ASMX web service, which is legacy technology. Use WCF instead. – John Saunders Mar 05 '12 at 18:12
  • If you have the ability to change BizTalk, have a look at stackoverflow.com/questions/9531690 – StuartLC Mar 06 '12 at 12:34

2 Answers2

1

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.

NotMe
  • 87,343
  • 27
  • 171
  • 245
0

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.

  • @JohnSaunders: Sometimes, adding additional web gardens to the ASP.Net app pool can increase throughput. It really depends on what, exactly, the choke point is. – NotMe Mar 05 '12 at 20:14
  • @ChrisLively: exactly my point: first find out what the problem is, second solve the problem. – John Saunders Mar 05 '12 at 20:18