{"id":178,"date":"2009-03-29T00:29:03","date_gmt":"2009-03-29T05:29:03","guid":{"rendered":"http:\/\/www.justdave.net\/dave\/?p=178"},"modified":"2009-03-29T00:29:03","modified_gmt":"2009-03-29T05:29:03","slug":"help-from-the-community-ensures-a-smooth-download-experience-for-firefox-308","status":"publish","type":"post","link":"https:\/\/www.justdave.net\/dave\/2009\/03\/29\/help-from-the-community-ensures-a-smooth-download-experience-for-firefox-308\/","title":{"rendered":"Help from the community ensures a smooth download experience for Firefox 3.0.8"},"content":{"rendered":"<p>Most people reading this probably already know that Mozilla utilizes a <a title=\"List of Mozilla download mirrors\" href=\"http:\/\/www.mozilla.org\/mirrors.html\" target=\"_blank\">network of volunteers<\/a> hosting downloads of Firefox (and other Mozilla products).\u00c2\u00a0 All of these volunteer sites are listed in a database with a numeric weight that shows, relative to the other sites in the database, how much traffic they can handle.\u00c2\u00a0 When you click the download link for Firefox on the mozilla.com site, you get sent to download.mozilla.org, which picks one of the sites out of that list at random (the chance of a given site getting picked is its weight divided by the sum of the weights of all of the available sites) and redirects you to that site to download the file.<\/p>\n<p>When you think about the sheer number of people using Firefox these days (<a href=\"http:\/\/blog.mozilla.com\/metrics\/2008\/06\/05\/firefox-adoption-grows-at-breakneck-pace\/\" target=\"_blank\">These 9-month-old stats<\/a> say we have 60 million active daily users &#8211; I&#8217;m sure it&#8217;s probably grown since then), and Firefox&#8217;s built-in application update functionality that notifies users that a new version is available and installs it for them, that means when we release a security update, we&#8217;re going to have at least 60 million downloads of it (mostly via the automatic update service) within that first 24 hours after release.\u00c2\u00a0 The amount of bandwidth required to host that many downloads in one day is staggering.\u00c2\u00a0 We don&#8217;t have that much bandwidth available in Mozilla&#8217;s datacenters, which is why we rely on our network of mirror sites for the downloads.\u00c2\u00a0 Each one of these sites may only be able to handle a small number of downloads, but when you add them all together, there&#8217;s a lot more capacity than our datacenters have. \ud83d\ude42<\/p>\n<p>Recently, as the number of Firefox users continues to grow, even our network of download mirror sites was starting to feel the pinch from the sheer volume of downloads during our security releases.\u00c2\u00a0 During both the Firefox 3.0.6 and 3.0.7 releases, we ended up having to enact a throttling mechanism on the update service in order to slow down the number of downloads being requested to a point where we weren&#8217;t completely burying all of our volunteer download sites, many of whom also host downloads for other open source projects besides Firefox.\u00c2\u00a0 When a Firefox application would check to see if there&#8217;s an update available, a percentage of users were told there wasn&#8217;t one, even though there really was.\u00c2\u00a0 If you manually picked &#8220;Check for Updates&#8221; from the Help menu, you always got it, though.\u00c2\u00a0 It was only the automatic checks that were throttled.\u00c2\u00a0 This mechanism is always our last resort.\u00c2\u00a0 When we have a security update, we want it in the end-user&#8217;s hands as quickly as possible. Delaying it for a day for a percentage of users is completely counter to that goal, and so we try everything to avoid having to use it.<\/p>\n<p>On Wednesday this last week, when the firedrill started that became the Firefox 3.0.8 release, I sent out an email to all of our download mirror admins, warning them that Firefox 3.0.8 was imminent.\u00c2\u00a0 I also pointed out how we had ended up needing to throttle updates during the 3.0.6 and 3.0.7 releases, and saying I still didn&#8217;t think we had enough capacity on the download mirror network to handle the release.\u00c2\u00a0 Paraphrased, &#8220;If you know anyone who&#8217;s not mirroring Mozilla yet, and would like to, get them in touch with me.&#8221;<\/p>\n<p><strong>The community came through in shining colors.<\/strong> In the 48 hours following that email, we increased the capacity of the download mirror network by more than half.\u00c2\u00a0 We left the peak traffic period of the first full day of Firefox 3.0.8 downloads about 6 to 8 hours ago, and I&#8217;m quite happy to report that we never had to throttle the updates at all for the Firefox 3.0.8 release.\u00c2\u00a0 Every Firefox browser that checked in to see if there was an update available got its update notification.\u00c2\u00a0 Not only that, but I had mirror admins telling me on IRC during the peak traffic hours &#8220;hey, my site can still handle more traffic, go ahead and bump my weight up some.&#8221;\u00c2\u00a0 Quite a welcome change from all the reports of dead servers during the last two releases. \ud83d\ude42<\/p>\n<p>Now, to be fair, we did have one other thing going for us.\u00c2\u00a0 This release happened in the afternoon on a Friday.\u00c2\u00a0 This effectively splits most of the download traffic between the home users on Saturday and the business users this coming Monday.\u00c2\u00a0 Given the way we performed today, though, I&#8217;m pretty confident we could have handled the release happening on another weekday anyway.<\/p>\n<p>But, the weekend lull brings up one other point that was raised on IRC by Mike Beltzner yesterday&#8230;\u00c2\u00a0 As I mentioned above, when we have a security update, the goal is to get it into the hands of the end user as fast as possible.\u00c2\u00a0 Mozilla&#8217;s QA signed off on the release in the early morning hours on Friday.\u00c2\u00a0 The bits were released out to the download mirror sites shortly afterwards.\u00c2\u00a0 Enough of those mirror sites had picked up the files by late morning to handle the normal release traffic, but we had to wait until mid-afternoon to release because of a long-standing tradition based on capacity planning to schedule the release at a time of day that will cause the fewest simultaneous downloads to avoid overloading the download mirror network.\u00c2\u00a0 Quite simply: the Pacific Ocean covers a lot of timezones.\u00c2\u00a0 Enough of them that there&#8217;s a general lull in internet traffic when it&#8217;s daytime hours over the Pacific Ocean.\u00c2\u00a0 If we schedule the release to happen as the west coast of North America is going offline for the day, then we start picking up traffic one timezone at a time as Asia and then eastern Europe start coming online for the new day.<\/p>\n<p>In the interest of getting the update out to the end users as quickly as possible, wouldn&#8217;t it be great if we had enough capacity on our download mirror network that we didn&#8217;t have to wait for the lull in Internet traffic caused by the Pacific Ocean to do a release?\u00c2\u00a0 If we released in the early morning hours in the US, we&#8217;d have a large number of timezones online for the day at release time and would get a much larger percentage of the users in the first few hours after release.<\/p>\n<p><strong>So, how about it, community?<\/strong> You guys pulled off some awesomeness this last week. Let&#8217;s see if we can do a little bit more, and be able to handle a release without regard for the time of day it happens!\u00c2\u00a0 If you know anyone who might be willing to host downloads for us, have them check out our <a title=\"Instructions for how to mirror Mozilla\" href=\"http:\/\/www.mozilla.org\/mirroring.html\" target=\"_blank\">Mirroring Instructions Page<\/a>.\u00c2\u00a0 All the info about how to set up and get included in the download pool is listed there.<\/p>\n<p>Here&#8217;s some numbers:\u00c2\u00a0 For a normal Firefox security update, I&#8217;ve been saying that we need an availability rating of 35000 or higher to handle the release traffic.\u00c2\u00a0 That number is the sum of the weights of the available mirrors that currently have the release files.\u00c2\u00a0 There&#8217;s a loose perception of that number being tied to the amount of available Mbit of download bandwidth, but that&#8217;s not really accurate, and depends on a lot of factors.\u00c2\u00a0 During both of the Firefox 3.0.6 and 3.0.7 releases, that number was hovering around 26000 most of the time.\u00c2\u00a0 For most of the Firefox 3.0.8 release so far, it&#8217;s been somewhere between 45000 and 55000.\u00c2\u00a0 I&#8217;m betting we could probably handle the traffic that would be generated by a morning release if we got that above 65000 consistently.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Most people reading this probably already know that Mozilla utilizes a network of volunteers hosting downloads of Firefox (and other Mozilla products).\u00c2\u00a0 All of these volunteer sites are listed in a database with a numeric weight that shows, relative to the other sites in the database, how much traffic they can handle.\u00c2\u00a0 When you click &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.justdave.net\/dave\/2009\/03\/29\/help-from-the-community-ensures-a-smooth-download-experience-for-firefox-308\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Help from the community ensures a smooth download experience for Firefox 3.0.8&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,2],"tags":[],"class_list":["post-178","post","type-post","status-publish","format-standard","hentry","category-firefox","category-work"],"_links":{"self":[{"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":3,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"predecessor-version":[{"id":181,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/posts\/178\/revisions\/181"}],"wp:attachment":[{"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.justdave.net\/dave\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}