I've given some thought regarding how to calculate the number of customers I'm able to handle with Heroku and something dyno. But to decipher it I want some input.
And I have to admit the official documentation is not nice to navigate and interpreter and so i haven't see clearly all. My complaints about this are it does not describe things perfectly. It sometimes describes old stacks, sometimes it's ruby specific, sometime it is not referred to whatsoever and so forth.
And So I take some input how Heroku, Cedar plank stack, works regarding demands to create my information.
You're a lot more than thanks for visiting correct me on my small presumptions like me relatively recent to dyno theory.
Allows say I've got a controller that can take a request and calculate a JSON response in 10ms in your area am i going to have the ability to serve 100request another?
When I comprehend the cedar plank stack does not possess a fronting caching solution, many questions arises.
- Does static content demands occupy dyno time?
- Does transfer time count to request time.
- Is one able to dyno solution transfer many reaction to a request simultaneously when the request requires small CPU utilization.
A few of the real question is connected so a combined answer or any other thought is valued.
A good example:
Static HTML page.
<HTML>...<img><css><script>... AjaxCall //dyno processing time 10ms AjaxCall //dyno processing time 10ms AjaxCall //dyno processing time 10ms AjaxCall //dyno processing time 10ms ...</HTML>
Can One serve (1000ms / (10ms x 4)) = 25HTML pages another?
- This assumes that static content is not supplied by a dyno.
- This assumes that transfer time is not attributed to the dyno.
If the is not the situation I will be a catastrophe. Allows say a cell phone in Africa makes 10 request and also have a 10sec transfer time then my Application is going to be not available for more than 1½ minute.
You are making two wrong presumptions. The good thing is that the problem becomes easier when you consider things in a different way.
To begin with keep in mind that a dyno is really a single process, not really a single thread. If you are using Java then you will be utilizing many request threads. Therefore it's not necessary to be worried about the application being not available while a request has been processed. You'll have the ability to process demands in parallel.
Also when speaking about dyno time that describes how long that the process is running not only request processing time. So an internet process that's awaiting a request still consumes dyno time since the operation is up although it waits for demands. For this reason you receive 750 free dyno hrs per month. You'll have the ability to operate a single dyno for the whole month (720 hrs).
So far as computing the number of demands the application can serve per second the easiest method to do that's to check it. You should use New Relic to watch the application when you load test drive it with JMeter or whatever your preferred load testing program is: http://devcenter.heroku.com/articles/newrelic
I'm able to only really answer the initial question: Static assets most definitely do occupy dyno time. Actually, I believe it is best to keep all static assets, including stylesheets and JS with an resource server when utilizing heroku's free package. (If everybody did that, heroku would benefit and thus can you). I suggest while using asset_sync jewel to deal with that. The Readme does explain that you will find a couple of, easily resolved, current issues.
Relating to your last point, sorry if I am misinterpreting here, but a person in nigeria usually takes ten seconds to obtain their request routed to Heroku, but many of this time is most likely spent trafficking round the maze of telephone trades between SA and USA. Your dyno is just tangled up for that area of the request that happens inside Heroku's servers, not the 9.9 seconds your request spent getting there. So effectively Heroku is oblivious as to whether your request is originating from Nigeria or Sweden.
You will find all kinds of things that you can do to hurry your application up: Caching, more dynos, Unicorn with several employees