Understanding server performance needs: a journey for some server knowledge!
Hey everybody!
The problem
I'd like to ask you all some advice, possibly in gathering some reading and studying material on the matter!
The thing is, as I already mentioned in my introductory post, I'm trying to understand what kind of performance and machines (virtual or physical) an application might need.
I'll have to take care of a handful (five, probably six) different web applications with entirely different requirements, and I'd like also to evaluate the possibility of setting up a physical machine at one of my friends' flat, since he asked me to.
Now, as I've already said, I wouldn't want to bother you with all the details and I'd like to use this discussion as a starting point for everybody who could be in my position in the future, eventually.
The question...
That being said, other than by testing, could you please help me in finding if there is there any reliable way to evaluate a single application requirements in terms of memory, CPU and bandwidth usage?
I have seen plenty of scripts evaluating bare server performances, but what about their real-life effects?
And what about ping?
And, in your experience, how much do you think ping should be taken into consideration?
I am asking because generally we, as software engineers, are struggling so much to find the outmost efficient way of delivering applications with less and less resources to be downloaded by the client... All these wonderful server side paradigms, frameworks, implementations and ideas are being constantly updated and developed but, is it really that important when delays could impact 40, 60, or even 80% of an application loading time?
Disclaimer
I am sorry to write such broad questions, but even with a solid understanding of networks and applications from both experience and university studies, I am finding extremely hard to evaluate a good price/performance ratio, and finding the maximum yield of this diminishing returns curve.
Would it be useful to start thinking about a script testing a handful of different applications requirements (a scary one, considering the variables...)?
Thanks in advance everybody!
Comments
The only way to know, is to run it yourself.
Use system monitoring tools like
top
to monitor their resource usage.But, if your application is running a service to the public, you'll never know since the resources used are proportional to the number of users served.
The all seeing eye sees everything...
I would recommend against hosting production websites in residential apartments (unless I misunderstood).
As was said, you learn from experience, since you can't always quantify performance for specific application. Also keep in mind some apps might rely more on CPU/RAM/Disk/GPU etc
You can try running stress testing on said application (thus turning it into a kind of a benchmark, albeit not a very reliable one). If your apps are not too complex it should be a pretty good indication of how the server can handle the load.