{"id":10761,"date":"2005-12-03T16:10:00","date_gmt":"2005-12-03T16:10:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/bharry\/2005\/12\/03\/concurrent-users\/"},"modified":"2018-08-14T00:35:08","modified_gmt":"2018-08-14T00:35:08","slug":"concurrent-users","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/bharry\/concurrent-users\/","title":{"rendered":"&#034;Concurrent&#034; users"},"content":{"rendered":"<div id=\"idOWAReplyText37139\" dir=\"ltr\">\n<div dir=\"ltr\"><font face=\"Arial\" color=\"#000000\" size=\"2\">Very frequently I get requests asking &#8220;how many concurrent users does Team Foundation Server support&#8221;?<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">I really don&#8217;t like this question.&nbsp; What is a &#8220;concurrent user&#8221;?&nbsp; In a stateless request\/response web based application, there really is no such notion.&nbsp; However enough people really want to know that I spent half the day Friday trying to figure it out.<\/font><font face=\"Arial\" color=\"#000000\" size=\"2\">&nbsp; I searched the web for hours looking for a definition of &#8220;concurrent&#8221; users.&nbsp; Most of what I found related to systems that have explicit &#8220;log in&#8221; and &#8220;log out&#8221; actions.&nbsp; We don&#8217;t (and neither do most scalable web applications &#8211; google, ebay, MSN, etc).&nbsp; There were some references that said any notion of &#8220;concurrent&#8221; users on a web application is a bogus notion.&nbsp; Others tried to define it.&nbsp; Those that did, defined it as a time window during which all users who accessed the server were counted as &#8220;concurrent&#8221;.&nbsp; I saw a range from 5 minutes to 6 hours and there didn&#8217;t seem to be any pattern.<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">I decided to go a similar but slightly different route with my analysis of TFS.&nbsp; What&nbsp;we did was take a week&#8217;s worth of TFS dogfood trace data and break it up into 10 minute intervals.&nbsp;&nbsp;We then looked at each 10 minute interval and counted how many unique users used the system in the interval.&nbsp; We also counted the total number of requests in each 10 minute interval and divided the # of requests by the number of users and then divided by 600 (the number of seconds in 10 minutes) to get the <strong>number of requests per second per &#8220;concurrent user&#8221;<\/strong>.&nbsp; You could say that&nbsp;we used a 10 minute window but&nbsp;I believe that by dividing by the number of requests&nbsp;we have made the result less sensitive to the exact choice of the width of the window.<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">We found that, in our data, this number is <strong>1 request per second per concurrent user<\/strong>.<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">I have previously gone through a similar set of math (see one of my earlier blog posts) that concluded that the peak RPS is 0.1 requests per second per&nbsp;team member&nbsp;(I defined team member as any one who used the server within a week).&nbsp; This means that <strong>there is a 10 to 1 ratio of requests per second per concurrent user and peak requests per second per team member<\/strong>.<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">I&#8217;m going to continue to quote TFS scalability in team size because I think it is a much more appropriate (and measurable) metric.&nbsp; However, if you (or your boss, customer, etc) really wants to know what the &#8220;concurrent&#8221; user support is, you can take the team size measures that I give and divide by 10.&nbsp; That&#8217;s how many &#8220;concurrent&#8221; users a given TFS hardware\/software configuration will support (approximately).<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">As I&#8217;ve said a few times, we are soon going to be publishing revised team size scalability numbers for TFS.&nbsp; Our goals for V1 were 500 users but we have found that the server does dramatically better than that.&nbsp; I&#8217;m hoping to get those updated results out this month.<\/font><\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\"><\/font>&nbsp;<\/div>\n<div dir=\"ltr\"><font face=\"Arial\" size=\"2\">Brian<\/font><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Very frequently I get requests asking &#8220;how many concurrent users does Team Foundation Server support&#8221;? &nbsp; I really don&#8217;t like this question.&nbsp; What is a &#8220;concurrent user&#8221;?&nbsp; In a stateless request\/response web based application, there really is no such notion.&nbsp; However enough people really want to know that I spent half the day Friday trying [&hellip;]<\/p>\n","protected":false},"author":244,"featured_media":14617,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10761","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"blog_post_summary":"<p>Very frequently I get requests asking &#8220;how many concurrent users does Team Foundation Server support&#8221;? &nbsp; I really don&#8217;t like this question.&nbsp; What is a &#8220;concurrent user&#8221;?&nbsp; In a stateless request\/response web based application, there really is no such notion.&nbsp; However enough people really want to know that I spent half the day Friday trying [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/10761","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/users\/244"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/comments?post=10761"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/posts\/10761\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media\/14617"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/media?parent=10761"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/categories?post=10761"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/bharry\/wp-json\/wp\/v2\/tags?post=10761"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}