Forum Discussion
Ideas on how to measure performance hit of SSL on a VIP?
Running LTM 9.3.1, users complain of response time problems for websites through it, as compared to hitting the website bypassing the F5. Lots of places to look, I know, but we use a tool called HTTPWatch and it points out that on a web page load that might have 50 objects, some of them (always gifs and jpgs), the "time chart" or breakdown of where the time was spent to download that item shows an unusually long time in the TCP Connect portion of the Get. HTTPWatch help says "Connect is the time required to create a TCP connection to the web server (or proxy). If a secure HTTPS connection is being used this time includes the SSL handshake process. Keep-Alive connections are often used to avoid the overhead of repeatedly connecting to the web server."
SSL Overhead is one part of this slice of time, and when my testers go around the F5 they're not hitting the server using SSL (and time to load a page is cut in half or better). I set up a test VIP to try and prevent SSL Offload, however some of the redirects on the page still go to HTTPS for a subset of GIFs (I haven't gotten Redirect Rewrite to rewrite all the Redirects correctly). The thing I notice, which drives this question, is that it's pretty consistent when there's a "[1 to 3 second] delay" in grabbing an object on the webpage, it's always when that object is at HTTPS://.... and never when the object is just HTTP://...
So I'm wondering if you have any thoughts on how to measure just how much overhead/delay SSL processing adds. It's not consistently on the same objects for each repeat of the same page loading, but there's always at least one or two objects SSL protected on the page that throw out one of these relatively long delays. Changing our website to not use SSL is not an option, but if our LTM is the bottleneck in it's ability to handle the SSL TPS (which according to the onboard Performance graph is <=20), I'd like to know that. If you look at the screenshot attached to this post, the picture really is worth a thousand words.
- Ray_Dodier_1102NimbostratusCheck out AOL_PageTest. It only works on IE browsers but it is free and breaks out the SSL time
- HamishCirrocumulusI suspect you're not doing HTTP keepalives on your website.
- JRahmAdminYou can use timers in curl to do this for you:
- DBNimbostratusThanks for the suggestions. I ran the AOL Test Page app from a service on the Web and it gave my site, VHA.COM an "A" for using Keep Alives. That was the only "A". I don't have access to a new enough version of cURL right now to get that time_appconnect variable but I'll work on that and let you know. That looks interesting. And I checked my HTTP profile: we're using the default which has Max Requests=0. Thanks again.
- HamishCirrocumulusCan you get a tcpdump with curl?
- DBNimbostratusI did that (traces on inside and outside F5 interfaces, and just in front of a desktop client) when I first posted this. I found it extremely difficult to match up the traces and timings because the traffic is all encrypted (outside the F5 and desktop), but was able to determine that out of 5 instances I could find the "pattern" of packets and packet-sizes and line them up, the data was being delivered to the desktop sub-second, leaving the only place for the performance bottleneck to be in the PC and/or the Browser, or it's ability to render the page. I've been looking for a re-usable and bullet proof way of confirming that for more data samples: something I can take to my web developers to prove it's not in the network components which they're absolutely convinced it is. Yes, the classic Application <--> Network finger pointing match.
- Ray_Dodier_1102NimbostratusNot sure if this helps but I've been playing around with WireShark and found a few things that were helpful to me. The first was to get the TCP Stream Index numbers for streams of interest. Once I did the WireShark capture I'd enter the following WireShark filter to try to get the beginning of each sequence using -
- DBNimbostratus
I was able to confirm that SSL was my problem. By setting up a seperate VIP that uses the same pool, but the VIP doesn't use SSL, I was able to close the gap between the time it takes to run through our F5 and Firewall as compared to going directly to a back-end server whereby the client and server are both inside our firewall. But of course, getting rid of SSL is not an option for our websites (It just explains the almost 100% performance degradation). This was all tested using a client machine that is internal to our network. Once I took that client to an offiste location and tested using a slow speed wireless connection at a resturaunt, SSL or no SSL makes no noticeable difference, because the propagation delay and bandwidth constraints cause page load times to increase 5-fold anyway, and the SSL delays become overshadowed by the network delays.
Another question is on the "client" vs. "server" protocol profiles. By default the server profile in LTM uses whatever is specified as the client profile. Does it make sense, if trying to optimize for slow WAN connections, to use wan optimization profiles on the [LTM VIP Configuration Setting] "Protocol Profile (Client)" side which is facing the end user, and use a LAN optimized profile on the "Protocol Profile (Server)" side which is on the same subnet as an interface of the LTM, just one hop away at LAN speeds?
Recent Discussions
Related Content
* 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