locked
IIS to BizTalk communication issue RRS feed

  • Question

  • Hi All,

    I have a custom service deployed on IIS and that service pulls data from first BizTalk server application and send it to second BizTalk server application.

    An issue is : Service is too slow and service is able to pass only two messages per second to other BizTalk Server,because of that messages are remain in waiting state on my first server and it affects performance.

    I am finding a configuration settings or solution by which my IIS will be able to communicate with BizTalk Server very speedly.

    Thanks

    Tuesday, November 25, 2014 10:04 PM

Answers

  • Hi Prasant ,

    What i can understand from your post is that you are unable to open threads in Isolated host instance (IIS) .

    For this cause i think you need to tune your IIS first to accept concurrent request from the service. You alsoneed to look into Host property for max min threads .

    You can change the IIS Application pool setting something like below

    configuration>
      <system.web>
        <applicationPool 
            maxConcurrentRequestsPerCPU="5000"
            maxConcurrentThreadsPerCPU="0" 
            requestQueueLimit="5000" />
      </system.web>
    </configuration>

    You can find some of the IIS tuning document in below MSDN Link

    Optimizing IIS Performance

    <applicationPool> Element (Web Settings)

    Thanks

    Abhishek

    Wednesday, November 26, 2014 7:23 PM

All replies

  • Is this IIS Service a Receive location or an independent app that communicates separately with the two BizTalk apps?
    Tuesday, November 25, 2014 10:31 PM
    Moderator
  • As you mentioned you have three entities: Two BizTalk server and one Service in IIS. Is the issue with service hosted in IIS itself? How is your service designed? What is the pooling/trigger condition on the service? is it timer based or continuous pooling? If your service is sleeping for sometime doing nothing by design, then you need to look after that. Where is your IIS hosted? how is machine doing? and so on..(sorry for many questions but there can be any factor causing delay) About setting, I normally look into web.config or app.config file to check if there are any application specific setting for a .NET application.

    Which adapters you are using for BizTalk communication? Try to findout time taken to communicate with both BizTalk server. If the latency is at the communication with BizTalk server (due to either of the BizTalk is slow) then you have  BizTalk Helth Check to start looking into how biztalk is doing.
    Try to find out the suspected area first.

    Another thing, can BizTalk servers can communicate directly using adapters like netTCP? Is there any specific reason why you have developed a custom service ? I don't know which phase you are right now, but I would definately suggest to have a re-look on why do we need a custom service here?


    If this answers your question please mark it as Answer and if this post is helpful, please vote as helpful. Thanks !

    Tuesday, November 25, 2014 10:45 PM
  • Hey Thanks for your Reply.

    The service is continous pool.

    On first server(Send Side) its configured in BizTalk application on Send Port with WCF-BasicHttp and

    On second server (Receive Side) its configured with WCF-BasicHttp with Receive Location.

    My IIS is hosted on another application server.As per machine there is no issues.

    We tried with NetTcp approach with WCF-Custom  adapter, however we able to run with DEv,QA but on PROD in between randomly we received below exceptions,System.ServiceModel.CommunicationException: The server did not provide a meaningful reply;this might be caused by contract mismatch,a premature session shutdown or internal server error.etc..

    Service which deployed on IIS are BizTalk schemas which deployed as servcie.

    My service continously pool data,but its able to pool only 2 messages per second and not more than that...I need to speed up the process..

    Tuesday, November 25, 2014 11:10 PM
  • Hi Prashant, 
    Sorry but I am still not clear on.. why there is a web serivce in between? is that IIS part of BizTalk2?
    From the description what you have written is your IIS service is just hosting a proxy (?), I am still not sure why though. You have said, your first BizTalk server has a SendPort port which is sending messages to this service and that is responsible for forwarding message to another BizTalk (is that another machine's IIS and attached to receive location? or seperate service). Seperate service still doesn't make much sense to me unless there is special need of doing so.. (like network rerouting / dmz etc). Otherwise I would directly call Another BizTalk's receive location because both BizTalk have WCF-BasicHttp adapter used (send/receive) in your case. 

    One reason I can think of is Order Delivery of Send Port makes delay because it waits for previous message delivery to initiate another send). If you have this enabled, you might need to disable if your business case accepts this.

    I would still recommend to think about NetTcp option because it looks like idle option in your case.
    From the error what you mentioned, I can say there is contract mismatch. Means your intermediate webservice might be manipulating/changing message which should ideally be done by BizTalk itself. To fix this you can take BizTalk2's contract and compare with what is being sent from BizTalk1 and fix the mismatch there.

    If this answers your question please mark it as Answer and if this post is helpful, please vote as helpful. Thanks !

    Tuesday, November 25, 2014 11:49 PM
  • Sorry, but this description is a little difficult to follow.

    Are the BizTalk Servers in different Groups?

    The IIS computer, is it for BizTalk or a completely separate app?

    Wednesday, November 26, 2014 12:38 AM
    Moderator
  • Hi Prasant ,

    What i can understand from your post is that you are unable to open threads in Isolated host instance (IIS) .

    For this cause i think you need to tune your IIS first to accept concurrent request from the service. You alsoneed to look into Host property for max min threads .

    You can change the IIS Application pool setting something like below

    configuration>
      <system.web>
        <applicationPool 
            maxConcurrentRequestsPerCPU="5000"
            maxConcurrentThreadsPerCPU="0" 
            requestQueueLimit="5000" />
      </system.web>
    </configuration>

    You can find some of the IIS tuning document in below MSDN Link

    Optimizing IIS Performance

    <applicationPool> Element (Web Settings)

    Thanks

    Abhishek

    Wednesday, November 26, 2014 7:23 PM