How to estimate server(sql server) resources for a specific number of users
I need to be able to estimate server resources for sql server To be able to save money. For example, how many resources (CPU, memory and RAM) are needed for a database with 3,000 users. Is there a formula? Is it possible to respond to this number of users with one server?
Memory is RAM.
There is no formula. Such numbers would depend hugely on the application being used (ie what queries get run, and the chattiness between application and DB server), the tuning that has been done to it (are you constantly full scanning particular tables or have you figured out a faster way), the activity of users (are they mostly going to be sat looking at the same screen that refreshes every 10 minutes or are they going to be clicking around loading all sorts of different data).
For third party applications, they will tell you required specs of your DB in order to provide supported performance.
For your own applications, you will want to do a bit of experimentation. Make sure you can replicate worst case representative work loads. If you can’t create a workload of substantial size then you will need to consider the effects of queuing - things get exponentially slower with more concurrency once you reach critical saturation. It’s almost always possible to tune the application so that the expected cpu requirement can be met.
Memory will be based on the size of your active workload. If you tune your queries and have modern storage then this is a lot more forgiving.