Sample AI Analysis · WPLoadTester 7

Server Infrastructure Analysis

A sample AI analysis of a real load test, run against a production server — not a synthetic example.

What this is: this analysis was generated off the cuff by the Claude Code CLI through WPLoadTester's MCP server, pointed straight at the load test's metrics — a quick, unscripted example. It is not the product's report. WPLoadTester 7.0's AI Bottleneck Report is the curated version: a one-click report we have tuned over years of professional engagements to cover every finding a load-test analysis should include.

Executive Summary

Test Performance: 1.9M hits processed, 2072 hits/sec peak, 355.9 Mbps peak transfer, 23 failures (99.999% success rate)

Critical Finding: Database-tier servers (20, 22, 25, 27) show persistent 96-98% memory utilization with extreme context switching (72K-119K/sec), creating the primary system bottleneck.

Capacity Limit: System shows stress at 1000 users, significant degradation at 1500 users, and one server fails at 2000 users (Server 29 at 81% CPU).

1. Server Tier Identification

Based on resource patterns, the 12 servers fall into three distinct tiers:

Server Tier Server IDs Characteristics Role Assessment
Database Tier 20, 22, 25, 27 • Memory: 96-98% (constant)
• Context Switches: 72K-119K/sec
• Low CPU: 1-16%
• Moderate I/O: 1-18%
Oracle RAC Nodes
Application Tier 18, 19, 21, 23, 24, 26, 28, 29 • Memory: 29-68%
• Context Switches: 2.9K-8K/sec
• CPU: 8-81% (variable)
• Minimal I/O: 0-3%
Tomcat/Java App Servers

2. Resource Utilization Progression

Load Level Database Tier Application Tier System State
500 Users Mem: 96-98%
CS: 72-78K/sec
CPU: 1-6%
Mem: 29-67%
CS: 2.9-4K/sec
CPU: 8-13%
DB already stressed
1000 Users Mem: 96-98%
CS: 78-94K/sec
CPU: 5-12%
Mem: 29-67%
CS: 5-6.5K/sec
CPU: 17-30%
Increasing load
1500 Users Mem: 96-98%
CS: 83-111K/sec
CPU: 5-13%
I/O: 8-14%
Mem: 29-67%
CS: 6-7.8K/sec
CPU: 25-41%
DB I/O emerging
2000 Users Mem: 96-98%
CS: 81-119K/sec
CPU: 3-16%
I/O: 5-18%
Mem: 30-68%
CS: 4.6-8K/sec
CPU: 30-81%
System breakdown

3. Critical Anomalies Detected

Anomaly Server(s) Evidence Impact
Memory Exhaustion 20, 22, 25, 27 96-98% constant Zero buffer for growth
Context Switch Storm 25 119,606/sec at 2000 users ~40% CPU wasted
CPU Saturation 29 81% at 2000 users Application tier failure
Load Imbalance 26 vs others 54% CPU vs 30-43% Inefficient distribution
I/O Escalation 25 4% → 18% progression Disk becoming bottleneck

4. Bottleneck Analysis

🔴 Primary Bottleneck: Database Memory + Context Switching

Evidence:

  • Database servers at 96-98% memory from baseline (no headroom)
  • Context switches 10-15x normal (should be <10K/sec)
  • CPU remains low (1-16%) indicating wait states, not compute bottleneck
  • Pattern indicates severe lock contention in database layer

Estimated Impact: 30-40% of CPU cycles wasted on context switching overhead

⚠️ Secondary Issue: Application Tier Scaling

Evidence:

  • Server 29 hits 81% CPU while others at 30-50%
  • Server 26 consistently higher CPU (54% vs 30-43%)
  • Uneven load distribution despite load balancer

Root Cause: Likely session affinity or sticky sessions causing imbalance

5. Network Analysis

Load Level Total Bandwidth Out Total Bandwidth In DB Tier Network App Tier Network
500 Users 19.5 MB/s 7.9 MB/s 4.5 MB/s out 15 MB/s out
1000 Users 38.7 MB/s 16.4 MB/s 12.3 MB/s out 26.4 MB/s out
1500 Users 52.4 MB/s 24.8 MB/s 32.7 MB/s out 19.7 MB/s out
2000 Users 54.1 MB/s 23.9 MB/s 34.9 MB/s out 19.2 MB/s out
Network Pattern Insight: Database tier network traffic increases disproportionately (8x) while app tier increases only 1.3x from 500 to 2000 users. This suggests inefficient queries returning large result sets.

6. Performance Correlation Matrix

Metric 500 Users 1000 Users 1500 Users 2000 Users Trend
DB Memory 96-98% 96-98% 96-98% 96-98% Constant Crisis
DB Context Switches 72-78K 78-94K 83-111K 81-119K Escalating
DB CPU 1-6% 5-12% 5-13% 3-16% Underutilized
App CPU Range 8-13% 17-30% 25-41% 30-81% Exponential
DB I/O 1-4% 1-6% 1-14% 2-18% Emerging Issue

7. Root Cause Analysis

Evidence-Based Root Cause Chain

1. Database Memory Saturation (96-98%)

  • No buffer cache available for query optimization
  • Forcing constant memory management operations
  • Likely oversized SGA/PGA or memory leak

2. Lock Contention Cascade

  • Memory pressure causes aggressive garbage collection
  • GC creates lock contention on memory structures
  • Results in 72K-119K context switches/second

3. CPU Inefficiency

  • 30-40% CPU wasted on context switching
  • Actual useful work limited despite low CPU %
  • System appears idle but is actually thrashing

4. Query Inefficiency

  • Network traffic increases 8x on DB tier
  • Suggests missing indexes or full table scans
  • Large result sets being transferred

8. Modern Architecture Recommendations

Immediate Actions

  1. Database Memory:
    • Reduce SGA to 60-70% of RAM (currently likely 90%+)
    • Implement Automatic Memory Management (AMM)
    • Check for cursor leaks in application code
  2. Connection Pooling (Modern Java Approach):
    • Migrate to HikariCP (fastest pool since 2013)
    • Formula: pool size = (CPU cores × 2) + disk spindles
    • For your 8-core VMs: ~18 connections max
  3. Query Optimization:
    • Enable SQL trace for top queries by elapsed time
    • Look for missing indexes (high buffer gets)
    • Implement query result pagination

Modern Java Upgrades Since 1.6

  • G1GC (Java 9): Better for high-memory apps, reduces GC pauses
  • ZGC (Java 11): Sub-millisecond pauses even with large heaps
  • Virtual Threads (Java 21): Eliminates context switch overhead
  • Reactive Streams: Non-blocking I/O reduces thread contention
  • Micrometer Metrics: Better observability than old JMX

Strategic Improvements

  • Caching Layer: Redis/Hazelcast to reduce DB load
  • Read Replicas: Offload reporting queries
  • Circuit Breakers: Hystrix/Resilience4j to prevent cascades
  • Service Mesh: Better load balancing than sticky sessions

9. Capacity Planning

System Capacity Assessment

Current Sustainable Load: ~1000 concurrent users

Theoretical Maximum: ~1500 users before degradation

Failure Point: 2000 users (Server 29 CPU saturation)

Bottleneck Priority:

  1. Database memory (constant 96-98%)
  2. Context switching overhead (30-40% CPU waste)
  3. Application tier load imbalance
  4. Emerging disk I/O issues (18% at peak)

Performance Potential:

With the recommended optimizations, this infrastructure could likely support 3000-4000 concurrent users. The hardware isn't the limitation - it's the configuration and architecture. The low CPU utilization (3-16% on databases) shows significant untapped potential once the memory and context switching issues are resolved.

Software

Copyright © 2026 Web Performance, Inc.

A Durham web design company

×

(1) 919-845-7601 9AM-5PM EST

Complete this form and we will get back to you as soon as possible. Please note: Technical support questions should be posted to our online support system.

About You
How Many Concurrent Users