Skip to content
pvmehta.com

pvmehta.com

  • Home
  • About Me
  • Toggle search form
  • DBMS_JOB all example Oracle
  • Oracle Standby Database Library Index from Metalink Oracle
  • How to Use DBMS_STATS to Move Statistics to a Different Database Oracle
  • Renaming the column name Oracle
  • login.sql Oracle
  • Adding or Dropping Online Redo Log Files When Physical Standby in place Oracle
  • Jai Shree Ram PHP/MYSQL/Wordpress
  • CPU speed on Linux Linux/Unix
  • S3 Basic info AWS
  • send email from unix mailx with attachment. Linux/Unix
  • Exadata Basics Oracle
  • RAC with RHEL4 and 11g Oracle
  • Validating ORACLE_SID againt oratab file. Linux/Unix
  • Monitor and Trace Unix processes using truss Linux/Unix
  • scripts to take listener.log backup Linux/Unix

CPU Core related projections

Posted on 12-Mar-202512-Mar-2025 By Admin No Comments on CPU Core related projections

Rule of Thumb for Estimating Concurrent DB Connections on a 24-Core Machine (Single Thread Each)

The number of concurrent database connections a 24-core machine can handle depends on various factors, including:

  1. CPU-bound vs. I/O-bound workload:
    • If queries are CPU-intensive, fewer connections can be supported.
    • If queries are I/O-heavy (waiting for disk/network), more connections can be supported.
  2. Database Engine and Configuration:
    • Oracle, PostgreSQL, MySQL, etc., handle concurrency differently.
    • Connection pooling and caching can impact the actual limit.
  3. Operating System and Memory Availability:
    • Context switching overhead increases with more connections.
    • Sufficient RAM is needed to avoid excessive swapping.

Hypothetical Calculation Based on CPU

A single-threaded, single-core system can typically handle 2-10 concurrent active queries (depending on execution time and parallelism). For a 24-core machine, we estimate:

1. If CPU is the Primary Bottleneck (CPU-Bound Workloads)

  • A general rule of thumb is 10 active connections per core.
  • For 24 cores: 24×10=240 active queries24 \times 10 = 240 \text{ active queries}
  • Beyond this, performance degrades due to CPU contention.

2. If the Workload is I/O-Bound (Queries Waiting for I/O)

  • More connections can be supported because many queries wait for disk or network.
  • Rule of thumb: 50-100 connections per core.
  • For 24 cores: 24×50=1,200 connections (moderate load)24 \times 50 = 1,200 \text{ connections (moderate load)} 24×100=2,400 connections (light workload)24 \times 100 = 2,400 \text{ connections (light workload)}

3. If Connection Pooling is Used

  • With a connection pool, inactive connections reuse the same thread, reducing load.
  • Typical connection pooling ratios:
    • 4-5x the number of cores for CPU-heavy loads → 96-120 connections.
    • 10-20x the number of cores for I/O-heavy loads → 240-480 connections.

Practical Estimation (Hypothetical)

Workload TypePer Core Estimate24-Core Estimate
CPU-Bound Queries~10 active queries~240 active connections
I/O-Bound Queries~50-100 connections~1,200 – 2,400 connections
With Connection Pooling~4-20x cores~96 – 480 connections

Conclusion

  1. For CPU-heavy applications → ~240 active connections.
  2. For mixed workloads (balanced CPU & I/O) → ~1,200 connections.
  3. For I/O-heavy workloads (many idle/waiting queries) → ~2,400 connections.
  4. With connection pooling → Effective limit increases (~480 connections).

Best Practices

  • Use connection pooling (pgbouncer for PostgreSQL, Oracle DRCP, HikariCP for Java).
  • Optimize queries to reduce long-running transactions.
  • Monitor CPU and wait states (top, vmstat, iostat in Linux).
  • Tune database parameters like PROCESSES (Oracle), max_connections (PostgreSQL), or thread_cache_size (MySQL).

Let me know if you need database-specific recommendations! 🚀

AWS, Azure, Linux/Unix, Oracle

Post navigation

Previous Post: Exadata Basics
Next Post: JSON/XML Types in Oracle

Related Posts

  • Very clear article about oracle dataguard Oracle
  • TOP-N Sql to find Nth max or Top N rows Oracle
  • Which environment is used by currently running process ( Very good) Linux/Unix
  • On solaris 10, “S” link is not part of $ORACLE_HOME/bin/oracle as default. ( For 9.2.0.8) Oracle
  • DETERMINING WHICH INSTANCE OWNS WHICH SHARED MEMORY & SEMAPHORE SEGMENTS Oracle
  • New OFA for 11g Oracle

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Categories

  • Ansible (0)
  • AWS (2)
  • Azure (1)
  • Django (0)
  • GIT (1)
  • Linux/Unix (149)
  • MYSQL (5)
  • Oracle (400)
  • PHP/MYSQL/Wordpress (10)
  • POSTGRESQL (1)
  • Power-BI (0)
  • Python/PySpark (7)
  • RAC (18)
  • rman-dataguard (26)
  • shell (150)
  • SQL scripts (348)
  • SQL Server (6)
  • Uncategorized (3)
  • Videos (0)

Recent Posts

  • Running PDB on single node in RAC09-Apr-2026
  • find_arc.sql09-Apr-2026
  • pvm_pre_change.sql08-Apr-2026
  • find_encr_wallet.sql08-Apr-2026
  • find_pdbs.sql08-Apr-2026
  • Creating a Container Database using dbaascli08-Apr-2026
  • track_autoupgrade_copy_progress.sql01-Apr-2026
  • refre.sql for multitenant01-Apr-2026
  • prepfiles.sh for step by step generating pending statistics files10-Mar-2026
  • tracksqltime.sql05-Mar-2026

Archives

  • 2026
  • 2025
  • 2024
  • 2023
  • 2010
  • 2009
  • 2008
  • 2007
  • 2006
  • 2005
  • CTAS with LONG Column for 7.x and 8 and 8i Oracle
  • RMAN : Consistent Backup, Restore and Recovery using RMAN Oracle
  • 10g RAC: Troubleshooting CRS Root.sh Problems Oracle
  • load SPM baseline from cursor cache Oracle
  • Python class import from different folders Python/PySpark
  • Index Range Scan Oracle
  • Directory wise folder wise space usage Linux/Unix
  • DBMS_Shared_pool pinning triggers Oracle

Copyright © 2026 pvmehta.com.

Powered by PressBook News WordPress theme