Linux JVM method latency
Linux JVM method latency slows down the Java application by introducing delays in executing the method calls.
JVM chaos faults use the Byteman utility to inject chaos faults into the JVM.
Use cases
Linux JVM method latency:
- Determines the performance bottlenecks of the application.
- Tests the system's ability to handle heavy payloads.
- Evaluates the application's behavior in high-stress cases.
- Determines how quickly an application returns to normalcy after the delay.
- Determines the performance and resilience of the dependant application (or services) running on Linux.
- 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 inCONNECTED
state.
Fault permissions
The fault uses the root
Linux user and root
user group.
Mandatory tunables
Tunable | Description | Notes |
---|---|---|
class | Specify as packageName.className that specifies the class in which you define the exception. | For example, org.framework.appName.system.WelcomeController . For more information, go to class name. |
latency | The delay you want to introduce in the application (in ms). | Default: 2000 ms. For more information, go to latency. |
method | The method to which exception is applied. | For example, Welcome . For more information, go to method name. |
pid | The process ID that Byteman uses to target the service. This is mutually exclusive with startupCommand . If pid is specified (other than 0), startupCommand is not required. | 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. | If startupCommand is specified, you need to set pid to 0. 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. |
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 example, 30s. For more information, go to ramp time. |
port | Port used by the Byteman agent. | Default: 9091 . |
Class name
The class
input variable targets the class name where the exception is present. Specify it in the format packageName.className
.
The following YAML snippet illustrates the use of this input variable:
apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-method-latency
labels:
name: jvm-method-latency
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 1
class: "org.framework.appName.system.WelcomeController"
method: ""
latency: 2000
rampTime: ""
Latency
The delay introduced in the Java application, in milliseconds. Its default value is 2000 ms.
The following YAML snippet illustrates the use of this input variable:
apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-method-latency
labels:
name: jvm-method-latency
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 1
class: "org.framework.appName.system.WelcomeController"
method: ""
latency: 2000
rampTime: ""
Method
The method name on which you apply the exception
input variable.
The following YAML snippet illustrates the use of this input variable:
apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-method-latency
labels:
name: jvm-method-latency
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 1
class: ""
method: "Welcome"
latency: 2000
startupCommand: ""
rampTime: ""
Pid
The process ID used by Byteman to target the services of the Java application. This is mutually exclusive with the Startup command
input variable.
The following YAML snippet illustrates the use of this input variable:
apiVersion: litmuchaos.io/v1alpha1
kind: LinuxFault
metadata:
name: linux-jvm-method-latency
labels:
name: jvm-method-latency
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 2
class: ""
method: ""
latency: 2000
rampTime: ""
Startup command
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 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-method-latency
labels:
name: jvm-method-latency
spec:
jvmChaos/inputs:
duration: 30s
port: 9091
pid: 0
class: "org.framework.appName.system.WelcomeController"
method: ""
latency: 2000
startupCommand: "/usr/bin/pet-clinic.jar"
rampTime: ""