Search code examples
oracleoracle11gconnection-pooling

Oracle NUM_CPUS, NUM_CPU_SOCKETS and Connection Pooling


I read about Oracle connection pooling size. Official documents say:

For example, suppose a server has 2 CPUs and each CPU has 18 cores. Each CPU core has 2 threads. Based on the Oracle Real-Wold Performance group guidelines, the application can have between 36 and 360 connections to the database instance.

My Oracle server's NUM_CPUS are 16, NUM_CPU_CORES are 8 but NUM_CPU_SOCKETS are 2. It means we have 2 CPU in fact but with multithreading it works like 16 CPU.

I am not sure which one to use in connection formula. Probably 16 but I'm asking here to be sure.

16cpu * 8cores = min 128 connection?

or

2cpu * 8cores = min 16 connection?

Which one applies to me. :/

Thanks in advance.


Solution

  • You should use 2 cpu * 8 cores = 16 minimum connections.

    This sentence in the documentation implies that the rule is meant for physical CPUs and cores: "The number of connections should be based on the number of CPU cores and not the number of CPU core threads." Your NUM_CPUS value of 16 must be a "logical" CPU since the system only has 2 sockets.