I am trying to instrument a SpringBoot application with the Java APM agent.
The SpringBoot application runs in a container based on the arm64v8/adoptopenjdk image. The APM agent is attached with the -javaagent method in the Docker CMD. SERVER_URLS, SERVICE_NAME, ENVIRONMENT, APPLICATION_PACKAGES, LOG_FILE and LOG_LEVEL are configured through environment variables. Additionally, I disabled all instrumentations by adding all possible options to -Delastic.apm.disable_instrumentations.
While the startup of the SpringBoot usually takes about 60ms, attaching the APM agent causes the startup to take over 50s. This is caused by an extremely high CPU usage of 100%, which starts as soon as the APM agent starts.
Is this a problem with the agent running on ARM?
Other Go services that run on the same node do not experience any of these CPU issues.
That's definitely strange and unexpected. Especially since you have disabled all instrumentations.
According to the logs, the agent starts up in under one second.
Could you get some thread dumps or attach a profiler at the startup?
The usual idle load is ~8%. I will try to run this setup on different instance type / Java version configurations and report back if I find anything wrong with the ARM / Java 8 version in particular. It's running on an a1.medium AWS instance. I have a feeling that upgrading the instance type and CPU might already help with this.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.