Question

I have 2 SQL 2017 Instances on each node in a 2 node cluster with a file share witness. 8 cores and 64GB RAM on each.

Node A acts as the primary for Instance 1 and Node B acts as the primary for Instance 2 . (Synchronous) Node B acts as the secondary for Instance 1 and Node A acts as the secondary for instance 2. (Synchronous)

I am wondering what the right balance of resources (Max DOP and Max Memory) would be in the ideal scenario? Would I be shooting myself in the foot by setting maxdop = 8 on the primaries? What is advisable for Maxdop on the secondaries in this situation?

Likewise, generally how much max memory should I set for the primary/secondary? (Obviously leave some for OS as well)

I am already working on a solution to re-balance the resources in the event of a failover, so no need to account for that in your reply. Unfortunately, this is for a Production build where I am unable to replicate the amount of typical load, so any generalities are welcome.

Thanks!!

Was it helpful?

Solution

I am already working on a solution to re-balance the resources in the event of a failover, so no need to account for that in your reply.

That's actually the main thing that drives the reply. If you don't sharply limit each primary instance it will acquire an unfair share of the server memory, and you may have severely degraded performance of the other instance after failover.

If you rebalance by setting max server memory for both instances in the case of a failover, you may run without limiting it on each node normally.

I would not limit the CPU affinity or maxdop on either instance. The OS allocates CPU resources very dynamically and fairly, so unless you observe one isntance being starved by excessive CPU utilization from the other instance, just leave those at the default settings.

Licensed under: CC-BY-SA with attribution
Not affiliated with dba.stackexchange
scroll top