Story
To explain the application traffic between sever and client (such as web server, file server…), we usually can adapt Poisson Distribution.
Example
Assume we have one server and would like to know how if clients can support total N=30000 clients in T=60.
Solution
The arrival rate of client per unit time: \(\lambda\) = 30000 / 60 = 500
- If you are using uniform distribution, then the server should be assured to support update to 500 client per unit time
However, in Poisson arrival model, we should consider the beyond the number (\(\lambda\): mean value of Poisson Distribution) of unit time (t=1). And we need to consider another important value within confidence interval, for example 95%, 99%, 99.9999%…. quantiles.
So, the result of arrival rate model would be:
- Within 95% confidence interval, qpois(0.95, 500) = 537
- Within 99% confidence interval, qpois(0.99, 500) = 553
- Within 99.9999% confidence interval, qpois(0.999999, 500) = 598
Application
If you want to explain the server system actually can support 30000 requests in 60 minutes, then you will need to ensure your system can support 553 clients per minute (99% confidence).
How about if you run benchmark testing and get the best throughput and would like to know the actually supporting client?
Here is the function to find \(\lambda\) with qunatil value and benchmark result:get.poisson.lambda = function(q, c) { x=1:q chk=lapply(x,function(l) { abs(qpois(c,l)-q) }) x[which.min(chk)] }So, if your benchmark result is 1250 request/minute and would like to have 99.9% confidence then the arriable rate would be
get.poisson.lambda(1250, 0.999)= 1144 request/minute which means your server can support:
\(\lambda \times\) 60 = 68640 (request/hour)