Forum Discussion

squip_86995's avatar
squip_86995
Icon for Nimbostratus rankNimbostratus
Aug 12, 2013

F5 Request Pipelining

Hi All,

 

Long time F5 user...first time question asker...

 

Firstly, hopefully this question has not been asked before (I cant seem to find an answer), secondly - hopefully its worthy of your help ;) .

 

I have a rather large 3-teir application that is beginning to scale heavily over the next few months. We currently use F5 LTM's to load-balance our Web and Application/Service teirs...

 

Load balancing in my WEB teir is great, the F5 is doing a great job; however my APP teir needs a bit of tweaking to get right:

 

When my web-teir calls off to services via the Application VIP I'm finding that the F5 is pipelining connections and I often find that one server out of 6 will be working harder than the rest.

 

Is anyone able to give me any pointers to force the LTM device to split up requests amongst my other application servers? All servers are Windows Server 2008 R2 and the service layer is all .NET WCF/.NET Web Services.

 

Thanks very much for your help!

 

-Patrick

 

  • Is there perhaps any logic involved that might be pinning requests to a specific server? An unbalanced load balancing option?

     

    Do you have a OneConnect profile applied to the VIP?

     

    You may also try disabling HTTP/1.1 if it truly is a pipelining issue.

     

  • Hi Kevin,

     

    Thanks for the fast reply! I have defined a ratio Load-balancing method on my pool and have split up load (ratio) based on CPU cores for the respective servers within that pool.

     

    I don't have one connect profile defined, would this be worth looking into?

     

    Also, your HTTP/1.1 suggestion could very well do it...i'll check it out.

     

    Regards,

     

    Patrick

     

  • OneConnect would make the most sense if it truly was a layer 7 issue. I'm not 100% convinced that the F5 will do its own pipelining on the server side. It should do what the client does, unless told otherwise. You can disable pipelining in the HTTP profile as well.

     

  • Awesome, thanks for your help - I shall check that out tomorrow when I get a bit of spare time.

     

    If anyone else has any extra input, I'll leave this question open for another day or so.

     

    -Patrick

     

  • Hi, you are running dynamic load balancing? Is it hardware or VM? So your problem is, that 1 server is getting more requests than the other one? Can you see that in the statistics or can you see it at the server monitoring? If you activate oneconnect, it will not change this behaviour. It will only reduce the amount of connections to the backend server. And so, it can make the application a little bit fast, because the server doesn't need to handle so many connections. But for me it sounds like a load balancing problem.

     

    regards

     

  • Sorry, I have not replied to this thread in a while.

     

    Since the tier that is experiencing issues is our Application service tier, running WCF - I am trailing disabling WCF HTTP Keep-Alives with a custom binding (its on by default, disabling it is looking good thus far) as per this document http://msdn.microsoft.com/en-us/library/vstudio/hh273122(v=vs.100).

     

    Forcing WCF to use HTTP 1.0 was a big no-no, this is the way forward.

     

    -Patrick