Hello,
async-profiler
shows that my akka-http
server is spending 16% of CPU time on forkJoinPool.scan(10% on signalWork and 6% on unSafe.park). The server gets thousands of requests per second and usually responds with 300ms latency. My fork-join-pool configuration looks like this
executor="fork-join-executor"
fork-join-executor {
parallelism-min=16
parallelism-factor=1
parallelism-max=32
}
throughput=1
}
The machine has 16 CPUs and 16GB memory. Application runs with Xmx 12GB
Total JVM threads include:
16 threads - akka.default-blocking-io-dispatcher(used to load a file every minute. Doesn’t really show up on profiling. Barely used)
8 threads for logback (typesafe logger)
Why is ForkJoinPool.scan taking so much CPU%? I have played around with all configurations of fork-join-executor but can’t get the forkJoinPool.scan CPU% to be lower than 16%. Any suggestions on how I can improve performance?
Other info:
jdk1.8.0_131
scala: 2.12.11
akka: 2.5.29
1 post - 1 participant