Skip to main content

Linux JVM trigger gc

Linux JVM trigger gc triggers the garbage collector on a specific process in Java that causes unused (or out of scope) objects, variables and so on to be garbage collected and recycled, thereby freeing up memory space. It is used to determine the performance and resilience of the application (or services) running on Linux machines.

tip

JVM chaos faults use the Byteman utility to inject chaos faults into the JVM.

Linux JVM trigger gc

Use cases

Linux JVM trigger gc:

  • Determines how the application behaves when memory space is freed up randomly for a brief period.
  • Determines how efficiently an application recovers and returns to normalcy.
note
  • This fault can be executed on Ubuntu 16 or higher, Debian 10 or higher, CentOS 7 or higher, RHEL 7 or higher, Fedora 30 or higher, and openSUSE LEAP 15.4 or higher.
  • The linux-chaos-infrastructure systemd service should be in an active state, and the infrastructure should be in CONNECTED state.

Fault permissions

The fault uses the root Linux user and root user group.

Mandatory tunables

Tunable Description Notes
pid The process Id that Byteman uses to target the service. This is mutually exclusive with Startup command. If startupCommand is specified, pid is specified as 0. For example, 6429. For more information, go to process ID.
startupCommand The command used to start the Java process. A substring match is used with the given command for all processes. This is mutually exclusive with pid. For example, /usr/local/bin/pet-clinic.jar. For more information, go to startup command.

Optional tunables

Tunable Description Notes
duration Duration through which chaos is injected into the target resource. Should be provided in [numeric-hours]h[numeric-minutes]m[numeric-seconds]s format. Default: 30s. Examples: 1m25s, 1h3m2s, 1h3s. For more information, go to duration of the chaos.
port Port used by the Byteman agent. Default: 9091.
rampTime Period to wait before and after injecting chaos. Should be provided in [numeric-hours]h[numeric-minutes]m[numeric-seconds]s format. Default: 0s. Examples: 1m25s, 1h3m2s, 1h3s. For more information, go to ramp time.

Startup command

The startupCommand input variable is used to start the Java process. A substring match is used with the given command for all processes. This is mutually exclusive with the pid input variable.

The following YAML snippet illustrates the use of this input variable:

apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-trigger-gc
labels:
name: jvm-trigger-gc
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 0
startupCommand: "/usr/bin/pet-clinic.jar"
rampTime: ""

Pid

The process ID used by Byteman to target the services of the Java application. This is mutually exclusive with the startupCommand input variable.

The following YAML snippet illustrates the use of this input variable:

apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-trigger-gc
labels:
name: jvm-trigger-gc
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 1
startupCommand: ""
rampTime: ""