Skip to main content

Pod JVM Mongo Latency

Pod JVM Mongo Latency fault introduces latency in the mongodb calls executed by the Java process running inside a Kubernetes pod.

tip

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

Pod JVM Mongo Latency

Use cases

Pod JVM Mongo latency:

  • Simulate database latency to evaluate how the application handles slower db queries, assess system performance under delayed database responses, and identify potential bottlenecks in handling high volumes of requests.
  • Test the impact of database query latency on the end-user experience, ensuring the application behaves gracefully under slower response times. This includes validating timeouts, retries, and fallback mechanisms to maintain a seamless user experience.
  • Ensure that the application can handle delayed db queries without failing. Test timeout configurations, error-handling strategies, and automatic recovery processes to verify that the system can withstand latency-induced delays without causing critical failures.

Mandatory tunables

Tunable Description Notes
DATABASE The name of the mongodb database to be targeted. For more information, go to Parameters
COLLECTION The name of the mongodb collection to be targeted. For more information, go to Parameters
METHOD The name of the mongodb method to be targeted. For more information, go to Parameters
LATENCY The latency to be injected into the database queries (in ms). For more information, go to Parameters

Optional tunables

Tunable Description Notes
TOTAL_CHAOS_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. For example: 1m25s, 1h3m2s, 1h3s. For more information, go to duration of the chaos.
TRANSACTION_PERCENTAGE The percentage of total mongodb calls to be targeted. Supports percentage in (0.00,1.00] range. If not provided, it targets all mongodb queries. For more information, go to Parameters
POD_AFFECTED_PERCENTAGE Percentage of total pods to target. Provide numeric values. Default: 0 (corresponds to 1 replica). For more information, go to pods affected percentage
JAVA_HOME Path to the Java installation directory. For example, /tmp/dir/jdk.
BYTEMAN_PORT Port used by the Byteman agent. Default: 9091.
CONTAINER_RUNTIME Container runtime interface for the cluster Default: containerd. Support values: docker, containerd and crio. For more information, go to container runtime.
SOCKET_PATH Path of the containerd or crio or docker socket file. Default: /run/containerd/containerd.sock. For more information, go to socket path.
RAMP_TIME Period to wait before and after injecting chaos. Should be provided in [numeric-hours]h[numeric-minutes]m[numeric-seconds]s format. Default: 0s. For example: 1m25s, 1h3m2s, 1h3s. For more information, go to ramp time.
SEQUENCE Sequence of chaos execution for multiple target pods. Default: parallel. Supports serial and parallel. For more information, go to sequence of chaos execution.
TARGET_CONTAINER Name of the container subject to API header modification. None. For more information, go to target specific container
TARGET_PODS Comma-separated list of application pod names subject to pod HTTP modify body. If not provided, the fault selects target pods randomly based on provided appLabels. For more information, go to target specific pods.
NODE_LABEL It filters the target pods that are scheduled on nodes matching the specified NODE_LABEL. For more information, go to node label.
LIB_IMAGE Image used to inject chaos. Default: harness/ddcr-faults:main-latest. For more information, go to image used by the helper pod.

Parameters

The following YAML snippet illustrates the use of these tunables:

kind: KubernetesChaosExperiment
apiVersion: litmuschaos.io/v1alpha1
metadata:
name: pod-jvm-mongo-latency
namespace: hce
spec:
tasks:
- definition:
chaos:
env:
- name: TOTAL_CHAOS_DURATION
value: "60"
# name of the mongodb database to be targeted
- name: DATABASE
value: "library"
# name of the mongodb collection to be targeted
- name: COLLECTION
value: "books"
# name of the mongodb method to be targeted
- name: METHOD
value: "find"
# provide the latency in ms
- name: LATENCY
value: "2000" #in ms
# provide the transaction percentage
- name: TRANSACTION_PERCENTAGE
value: "50"