#13467·pinpoint

[Performance Regression] High CPU usage and TPS drop after upgrading Agent from 2.x to 3.x (Spring Boot 2.6.7 + WebFlux / Reactor Netty)

Author: moondalhyun-glitchCreated Mar 11, 2026Updated Sep 16, 2026

Summary

After upgrading the Pinpoint Agent from 2.x to 3.x, we observed significantly higher CPU usage and earlier throughput saturation under identical load conditions.

The issue is reproducible in a controlled test environment using Spring Boot 2.6.7 with WebFlux (Reactor Netty).


Screenshot Explanation

The attached screenshot compares CPU usage between Pinpoint 2.x and 3.x agents:

  • Green line = Pinpoint 2.x Agent
  • Yellow line = Pinpoint 3.x Agent

In the graph:

  • The yellow line (3.x) consistently shows higher CPU usage than the green line (2.x).
  • CPU saturation (near 100%) occurs earlier with 3.x.
  • Under increasing load, 3.x reaches CPU limit faster and remains saturated.
  • 2.x maintains lower CPU usage under the same workload.

This behavior directly correlates with TPS degradation observed in load testing.


Environment

Application:

  • Spring Boot 2.6.7
  • WebFlux (Reactor Netty)
  • Redis
  • MongoDB
  • JWT generation
  • Encryption

Pinpoint:

  • Agent upgraded from 2.x → 3.x
  • Applied using: -javaagent:/etc/pinpoint-agent/pinpoint-bootstrap.jar

JVM:

  • Xms2g / Xmx2g
  • G1GC

Kubernetes:

  • CPU request/limit: 1 core
  • Memory: 3Gi

Load Tool:

  • nGrinder
  • Load pattern: Vuser × (response time + 1 second)

Observed Performance Difference

Under identical workload and resource limits:

GET /health

Pinpoint 3.x:

  • CPU: 100%
  • Avg response: 835ms
  • TPS: 73.9

No agent:

  • CPU: 29.7%
  • Avg response: 438µs
  • TPS: 430

GET /auth/blacklist

Pinpoint 3.x (default):

  • CPU ~99.7%
  • Avg response: 1.62s
  • TPS: 56.3

With sampling disabled:

  • Avg response: 191ms
  • TPS: 122

With sampling + WebFlux/Reactor plugins disabled:

  • Avg response: 43.6ms
  • TPS: 139

No agent:

  • Avg response: 10.9ms
  • TPS: 144

Saturation Behavior

With Pinpoint 3.x:

  • CPU reaches ~100% earlier.
  • TPS plateaus around ~230.
  • Increasing load only increases response time, not throughput.

This saturation occurs earlier than with Pinpoint 2.x.


Observations

  1. Pinpoint 3.x shows consistently higher CPU usage than 2.x.
  2. 3.x reaches saturation under lower load conditions.
  3. Throughput degradation directly correlates with CPU saturation.
  4. Disabling sampling significantly reduces overhead.
  5. Disabling WebFlux/Reactor-related plugins further improves performance.

Questions

  1. Are there known performance differences in 3.x compared to 2.x for WebFlux environments?
  2. Were there changes in tracing or async instrumentation between 2.x and 3.x?
  3. What configuration is recommended to minimize overhead in WebFlux-based services?

We can provide:

  • Thread dumps (agent on/off)
  • async-profiler or JFR results
  • Full sanitized pinpoint.config
  • nGrinder scenario files

Thank you.

Image