Search code examples
spring-bootkubernetesgarbage-collectionjvmignite

Apache Ignite: Possible too long JVM pause: 714 milliseconds


I have a setup of Apache Ignite server and having SpringBoot application as client in a Kubernetes cluster.

During performance test, I start to notice that the below log showing up frequently in SpringBoot application:

org.apache.ignite.internal.IgniteKernal: Possible too long JVM pause: 714 milliseconds

According to this post, this is due to "JVM is experiencing long garbage collection pauses", but Infrastructure team has confirmed to me that we have included +UseG1GC and +DisableExplicitGC in the Server JVM option and this line of log only show in SpringBoot application.

Please help on this following questions:

  1. Is the GC happening in the Client(SpringBoot application) or Server node?
  2. What will be that impact of long GC pause?
  3. What should I do to prevent the impact?
  4. Do I have to configure the JVM option in SpringBoot application as well?

Solution

  • Is the GC happening in the Client(SpringBoot application) or Server node?

    GC error will be logged to the log of the node which suffers problems.

    What will be that impact of long GC pause?

    Such pauses decreases overall performance. Also if pause will be longer than failureDetectionTimeout node will be disconnected from cluster.

    What should I do to prevent the impact?

    General advises are collected here - https://apacheignite.readme.io/docs/jvm-and-system-tuning. Also you can enable GC logs to have full picture of what happens.

    Do I have to configure the JVM option in SpringBoot application as well?

    Looks like that you should, because you have problems with client's node.