--
You received this message because you are subscribed to the Google Groups "Guerrilla Capacity Planning" group.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
Visit this group at http://groups.google.com/group/guerrilla-capacity-planning.
For more options, visit https://groups.google.com/d/optout.
Very good point - as users become more focused on buying presents the workload changes significantly. The long term averages I was looking at (mainly as they are the only ones I can find across sites) will not show that detail. [Averages aren't great either as a stat, but again it's what is available.]
Out of interest, Alexa does provide some insight into whether a site might be affected by significant changes in workload:
staples clearly has a spiky/bursty workload (possibly cyber monday):
http://www.alexa.com/siteinfo/staples.com
The guardian newspaper not (changed domains last year):
http://www.alexa.com/siteinfo/www.theguardian.com
Thanks!
Alex
--
You received this message because you are subscribed to the Google Groups "Guerrilla Capacity Planning" group.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
Visit this group at http://groups.google.com/group/guerrilla-capacity-planning.
For more options, visit https://groups.google.com/d/optout.
Alex, I had a lot of trouble following the points in your blog post and ultimately what was the key idea. That seems to be consistent with the lack of response on other fora that you noted. Too many words without any formalization.
At one point, you do ask about how users can be modelled but I didn't see one or how it might best be constructed for a test rig. Inevitably, I can't help but look at such descriptions from a more formal queue-theoretic standpoint. Presumably you also have something like that in my too, because you do use some QT terms, like open and closed (although without definition).
But then I see strange terms like "arrival throughput". The QT expression for incoming requests is arrival rate.
On the output side you could use the term departure rate to differentiate. If the arrival rate is non-zero but the departure rate is effectively zero, then the system throughput will also be zero: with queues building internally in the SUT.Another strange phrase that threw me: "we expect 10 new independent users to arrive at the site every second." In QT we normally think of users as submitting requests into the SUT. The (finite number of) users are represented by the load-test scripts.
So, it's the requests that arrive, not the users. You may have a different definition, but I'd have to see formally what that was.
I also had a lot of trouble getting an unambiguous handle on the difference between pages, page views, sessions, etc. I gave up. If you attended one of my classes, I would have you up in front of the whiteboard (in private, if preferred) attempting to define clearly, explicitly and symbolically, each of your terms, e.g., the system throughput starts out as X = 1000 pages/second or whatever.
Skipping ahead to your plot, you state "the arrival throughput is related to the average session length by a power function..." I don't see a power-law (for which you would require some serious justification). I see a simple inverse relationship of some kind.
If I assume you actually mean the system throughput, not the arrival rate (in the title), and the page views are associated with some composite service time S, then Little's law tells us that the system throughput X is related to S byX = ρ / Swhere ρ is the server utilization. For a constant ρ, X and S are inversely related. If, as you say "At the time of the outage the users already interacting with the site will block completely" then, ρ = 0 and therefore X = 0: independent of S. No news there, but the system is no longer in steady state. Once all the possible requests are submitted, the internal queues will grow and the system will come to a screeching halt. I guess that's the definition of an outage. But, at that point we're talking about a functional issue, not a performance issue.Even if we finally understood what you are actually trying to model, we would still need to determine how that should be mapped onto the test rig configuration. But at least we would have a well understood and consistent QT framework to refer to.
On Friday, June 27, 2014 3:49:07 PM UTC-7, ceeaspb wrote:Hello,I have put some thoughts down on paper around the implications of average session length and would be interested if anyone had review comments. These ideas are not new but they may not be widely accepted.I only touch on it at the end but I feel there is a bit of an elephant in the room around (not) performance test workload modelling open/partly open systems. Perhaps this is because there is not a lot literature on it. Where it is mentioned it is typically very brief so people may not be aware. Contrast this with an endless body of documentation on concurrent users.I mentioned it on a couple of other forums but didn't get much constructive discussion so far - I am hoping there may be some people interested in this here.Thanks,Alex
thanks for your time reviewing, and comments.Apologies for the lack of formality. hopefully we can start to remove the words and become more formal.The question/idea I have is:
what model type should most public websites be modelled as: open, partly-open [ http://users.cms.caltech.edu/~adamw/papers/openvsclosed.pdf ] or closed [ section 3.2 types of circuits Perl::PDQ] ?
I believe open or partly open from my own experience and the literature including your Perl::PDQ book, and blog posts.
This seems to be at odds with what I see in terms of 99% of questions along the lines of "how should I test my site with X concurrent users?" on various fora. Fixed numbers of users is associated with closed models. In addition some tools may have an incremental cost per simulated user provoking a driver to minimise he number of those users which could cause the test problems.
Interestingly even if the question is "how should I test my site with X requests per second/minute/hour/day/etc?", the answer that invariably comes back is "first you need to calculate the number of users... by this method...". And so immediately the problem stated in open model arrival rate terms is translated into a closed type model. I can only assume this is because of tool limitations that mean an open model is not supported directly without translating into a fixed number of users where the arrival rate up to a point is also fixed via pacing/ variable think time.** number of concurrent users is still important. The question is whether it should be an input to the model or be validated as an output.My interest in this comes from an interest in developing volume test tools and a general curiosity to resolve the current situation, of extreme focus on fixed concurrent users, that does not seem to be correct. I don't think I have anything to add to QT itself. It's more how volume test tools can be best implemented to support accurate tests and consistently with QT where possible. I contribute to a load simulator called Gatling currently.I have put some comments inline below also.Thanks,
Alex
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-planning+unsub...@googlegroups.com.
To post to this group, send email to guerrilla-capacity-planning@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
thanks for the feedback, I read the Brady 2012 paper.Certainly reporting in terms of RPS is what I have been doing to date. I learned this lesson many years back when you experience that production environment measure rates mostly.It doesn't reference the openvsclosed paper though I would guess because it's focus is on how to make the best out of JMeter. My current focus is not to limit what tool is used which would imply comparing/contrasting real load generators as a reference point. Also it notes the difference between real and simulated users but does not identify what kind of loop the real user population is (or whether it is a loop at all).It identifies that "Traffic can be offered to the Figure 2 [real user] target system in an unbridled way that will cause it to overload"and then states "Mimicking the independent behavior of real users can be difficult to accomplish in the limited resource closed loop environment of Figure 1"So that is one of the main points of this thread, that more recent tools employ new techniques like non-blocking asynchronous io code, lock free algorithms, message passing rather than thread per user and zero copy to allow for a massively more scalable/efficient load generator. This should allow us enough resource to simulate at high rates a new unique user arriving, and once done in the closed request loop departing not to return back into the system.User independence is discussed. It doesn't include how independent users can offer load to the system in an unbridled or uncoordinated way. I agree that for a test to pass we need to acheive steady state. We also need to replicate or predict how systems will fail, the lack of unbridled offered load is a risk. Again a difference in focus which will be useful to cover off at this time.I think I will need to write my own paper at the end of this discussion to help others avoid the questions that are still outstanding.
Thanks,
Alex
Alex
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-planning+unsubs...@googlegroups.com.
To post to this group, send email to guerrilla-capacity-planning@googlegroups.com.
Visit this group at http://groups.google.com/group/guerrilla-capacity-planning.
For more options, visit https://groups.google.com/d/optout.
One quick comment that may help to further clarify what Jim Brady is trying to say in his paper.
A somewhat latent assumption in the definition of a closed queueing network is that each of the N users/generators/scripts cannot issue more than one outstanding request. Jim does not state this assumption. This one-2-one correspondence accounts for the total number of possible requests being finite and equal to N. At the risk of mixing metaphors a little, these requests are either enqueued (in the SUT) or waiting for a mean service time Z while the user "thinks" about what to do next. Moreover, the constraint creates a negative feedback or self-throttling queueing system. So technically, the arrival pattern is correlated and therefore not truly exp distributed.For an open queueing network this constraint is relaxed such that the total number of requests in the system can be unbounded (but not infinite). Since there is no feedback, the arrivals are exp distributed. These assumptions are more clearly stated in the CMU-Usenix paper.
What Jim describes in the first part of his paper is how he uses the closed environment (the default for load-test rigs like LR and JM) to mimic an open environment. He does this in 2 steps:
- Unhooking the no more than one outstanding request constraint, i.e., removes feedback.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
thanks, question inline below.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
...
--
You received this message because you are subscribed to the Google Groups "Guerrilla Capacity Planning" group.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-planning+unsub...@googlegroups.com.
To post to this group, send email to guerrilla-capacity-planning@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "Guerrilla Capacity Planning" group.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.
To post to this group, send email to guerrilla-cap...@googlegroups.com.
Hello - this is Jim ready to answer questions regarding my CMG2012 paper titled "When Load Testing Large User Population Web Applications the Devil Is In the (Virtual) User Details".
As the title suggests, my perception is that too much emphasis in most load testing efforts is on mimicking the behavior of individual users and not enough focus is placed on the quality of the workload these “Virtual” users offer to the target environment. My objective is to be reasonably certain the request mix, rate, and timing created by the load tool and it’s crowded computing environment is consistent with that of a large population of application users in steady state making requests on separate computers with no coercion between them when pressing the enter key.
Large populations that reach steady state which operate in this manner conform to a Poisson process where times between requests are Negative-Exponentially distributed and the numbers of requests in constant length intervals are Poisson distributed. I determine if my request timing is consistent with this environment by checking the statistical equality of the request time mean and standard deviation since such equality is the case for the Negative-Exponential distribution.
I realize that I am using a closed model tool (JMeter) to represent what is largely an open model environment. I attempt to mitigate the negative effects of this circumstance by implementing a large number of virtual user threads while maintaining a high mean think time / mean response time ratio. The goal is to minimize the request pattern distortions associated with a virtual user thread in queue or service being unavailable as a requestor. As a practical matter, the impact of an individual traffic source’s state on the distribution of times between arrivals becomes blurred as the number of sources increase toward the open source environment.
The JMeter HTTP/HTTPS Sampler is described in the JMeter User Documentation:
http://jmeter.apache.org/index.html
In the end, users, virtual or real, are traffic sources, not traffic, and traffic is what drives resource consumption on target systems. That is why I put so much emphasis on the mix, rate, and timing of requests not on the traffic sources making the requests.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-planning+unsub...@googlegroups.com.
I realize that I am using a closed model tool (JMeter) to represent what is largely an open model environment. I attempt to mitigate the negative effects of this circumstance by implementing a large number of virtual user threads while maintaining a high mean think time / mean response time ratio. The goal is to minimize the request pattern distortions associated with a virtual user thread in queue or service being unavailable as a requestor. As a practical matter, the impact of an individual traffic source’s state on the distribution of times between arrivals becomes blurred as the number of sources increase toward the open source environment.
To unsubscribe from this group and stop receiving emails from it, send an email to guerrilla-capacity-...@googlegroups.com.