Forum Discussion
pagema1_69881
Mar 08, 2010Nimbostratus
Very Slow Application performance behind F5
We have one application that performs very poorly behind F5. There is a 9 second delay on the initial GET request going through the VIP. If we bypass the F5 to the servers directly there is no delay. Wireshark shows a lot of reassembled PDU's. I'm no guru with captures so I'm not sure what this means. Here is our setup:
SSL Offloading VIP.
one http pool with 2 members.
TCP lan/wan Optimized profiles on VIP, with one connect profile.
We are using SNAT
We tried disabling Nagle's, no effect
Tried enabling proxy max segment, no effect
tried going thru F5 using HTTP only, no effect
If we connect to the servers directly that 9 second initial delay vanishes.
No packet loss on NIC's.
Switch is set to 100MB Full as are F5 Nics.
2 HA LTM 3400 vers 10.0.1.
We do have a case open with support but they have not been able to identify the issue within our TCP Dumps. Has anyone seen this type of delay only on the initial GET Request? Any tips on improving performance? Our other applications behind F5 don't have this delay.
Thanks,
Marc
- Mark_CloutierNimbostratusJust a guess, but does your web server have redundant nics? I ran into a situation where load balanced servers with teamed nics were load balancing transmitted traffic. This caused problems with the v 9.4.6 LTM where I was running a FastL4 profile and doing SSL termination, since it was tracking the connection based on source mac which was changing. Once we changed the teamed nic config to only use the secondary nic in the event of failure on the first, it worked fine.
- William_64205NimbostratusIs the website multi-tiered? Does it also connect to other databases?
- pagema1_69881NimbostratusFirst of all thanks for so much feedback.
- pagema1_69881Nimbostratusdisabling net bios on teh NIC worked!!! We are golden now with no 9 second delay. Thanks for everyone's input!!!!!!
- William_64205Nimbostratuswow disabling netbios on the nic worked? i have never heard of that affecting it.
- JRahmAdminMaybe this?
- William_64205Nimbostratus9 seconds =~ Specifies the number of times the system will retry NetBIOS name query broadcasts. The default is 3. The timeout for each netbios query is ~ 3 seconds. Mind you this is rough numbers for the timeout query. But doing a google search of windows 2003 netbios issues shows a few listings of them.
- hooleylistCirrostratusThe NetBIOS over TCP/IP wiki page has some details on what NetBIOS is used for:
- L4L7_53191NimbostratusMaybe this then (source: wikipedia). Somehow having the VIP in line affected this process somehow and the lookups were breaking? An interesting bit of data may be to re-enable it on the NIC, then dump that UDP 137 traffic and see what is going on exactly in Wireshark (if you've not arlready done this).
In order to start sessions or distribute datagrams, an application must register its NetBIOS name using the name service. NetBIOS names are 16 bytes in length and vary based on the particular implementation. Frequently, the 16th byte is used to designate a "type" similar to the use of ports in TCP/IP. In NBT, the name service operates on UDP port 137 (TCP port 137 can also be used, but it is rarely if ever used).
- Joel_MosesNimbostratusI know the issue's been solved, but I thought I'd share some things I've learned about Windows web server loadbalancing, NetBIOS, and Windows Integrated Authentication.
when RULE_INIT { set ::negotiate_rule_debug 0 } when HTTP_REQUEST { set negotiate_disable 0 if { [HTTP::header exists "Authorization"] } { set negotiate_disable 0 } else { set auth_host [string tolower [HTTP::host]] set negotiate_disable 1 } } when HTTP_RESPONSE { On 401 requests, if we've got the Negotiate holddown cookie, remove the WWW-Authenticate headers for Negotiate and keep only the NTLM and basic auth ones headed to the client. The realm header on the basic auth is set to the present hostname captured in HTTP_REQUEST. if { ($negotiate_disable) && ([HTTP::status] == "401") } { HTTP::header remove WWW-Authenticate HTTP::header insert "WWW-Authenticate" "NTLM" HTTP::header insert "WWW-Authenticate" "Basic realm=\"$auth_host\"" unset auth_host unset negotiate_disable if { ($::negotiate_rule_debug) } { log local0. "Replacing Negotiate for initial authentication." } } }
Recent Discussions
Related Content
Â
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects