{"id":856,"date":"2010-05-03T15:10:51","date_gmt":"2010-05-03T19:10:51","guid":{"rendered":"http:\/\/www.webperformanceinc.com\/load_testing\/blog\/?p=856"},"modified":"2012-03-14T17:03:53","modified_gmt":"2012-03-14T21:03:53","slug":"is-your-load-balancer-increasing-your-bandwidth-usage","status":"publish","type":"post","link":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/2010\/05\/is-your-load-balancer-increasing-your-bandwidth-usage\/","title":{"rendered":"Is your Load Balancer increasing your Bandwidth usage?"},"content":{"rendered":"<p>Is your load balanced website using more bandwidth under load than a single server would? In a previous article (\u201c<a href=\"\/load-testing\/blog\/2010\/04\/status-code-200-didnt-match-expected-304\/\">Status code 200 didn\u2019t match expected: 304<\/a>\u201d), we discussed how a website may return full data content back to a client, even when the browser had the resource cached. If you believed that adding an extra server and a load balancer will increase your performance, this can be an unsettling surprise. The problem arises when two web servers are delivering different Entity Tags for the same static resource:<br \/>\n<img decoding=\"async\" src=\"\/images\/blog\/etag-same-file-diff-server.png\" alt=\"Headers of same file on different servers\" \/><\/p>\n<p>In this example, we have two requests made to the same public URL, but these requests were routed to different servers behind the load balancer. Notice that each server creates a slightly different ETag for the same file. As noted earlier, the client uses ETags in order to detect if a file has changed. If the load balancer redirects the client to a different server since the last time the user has visited the site, then their cache is effectively invalidated.<\/p>\n<p>There are some ways to remedy this behavior. Yahoo has recommendations to remove ETags entirely if they are not being utilized by the site: <a href=\"http:\/\/developer.yahoo.com\/performance\/rules.html#etags\">http:\/\/developer.yahoo.com\/performance\/rules.html#etags<\/a><\/p>\n<p>For IIS v6 customers, it may be easier to synchronize the ETAG_CHANGENUMBER between each server, as discussed at <a href=\"http:\/\/blogs.iis.net\/chrisad\/archive\/2006\/12\/18\/iis7-deployments-calls-for-etag-usage-review-if-using.aspx\">http:\/\/blogs.iis.net\/chrisad\/archive\/2006\/12\/18\/iis7-deployments-calls-for-etag-usage-review-if-using.aspx<\/a><\/p>\n<p>Happy Testing!<\/p>\n<p>-Frank, Engineer at Web Performance<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Is your load balanced website using more bandwidth under load than a single server would? In a previous article (\u201c<a href=\"\/load-testing\/blog\/2010\/04\/status-code-200-didnt-match-expected-304\/\">Status code 200 didn\u2019t match expected: 304<\/a>\u201d), we discussed how a website may return full data content back to a client, even when the browser had the resource cached. If you believed that adding an extra server and a load balancer will increase your performance, this can be an unsettling surprise. The problem arises when two web servers are delivering different Entity Tags for the same static resource:<\/p>\n<p>In this example, we have two requests made to the same public URL, &hellip; <a href=\"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/2010\/05\/is-your-load-balancer-increasing-your-bandwidth-usage\/\">Continue reading &raquo;<\/a><\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[75,237],"class_list":["post-856","post","type-post","status-publish","format-standard","hentry","category-load-testing","tag-bandwidth","tag-load-testing"],"_links":{"self":[{"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/posts\/856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/comments?post=856"}],"version-history":[{"count":5,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/posts\/856\/revisions"}],"predecessor-version":[{"id":3274,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/posts\/856\/revisions\/3274"}],"wp:attachment":[{"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/media?parent=856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/categories?post=856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webperformance.com\/load-testing-tools\/blog\/wp-json\/wp\/v2\/tags?post=856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}