StressChaos Experiment
This document helps you create StressChaos experiments.
StressChaos can generate plenty of stresses over a collection of pods. The stressors is injected into the target pods via the chaos-daemon
internally.
#
ConfigurationA StressChaos shares common configurations like other chaos, such as how to select pods, how to specify periodic chaos. You can refer to other docs for details. It defines stressors in either of the following two ways:
stressors
Stressors
defines a plenty of stressors supported to stress system components out. You can use one or more of them to make up various kinds of stresses. At least one of the stressors should be specified. The following is supported stressors for now:memory
A
memory
stressor will continuously stress virtual memory out.Option Type Required Description workers
Integer True Specifies concurrent stressing instance. size
String False Specifies memory size consumed per worker, default is the total available memory. One can also specify the size as % of total available memory or in units of B, KB/KiB, MB/MiB, GB/GiB, TB/TiB. cpu
A
cpu
stressor will continuously stress CPU out.Option Type Required Description workers
Integer True Specifies concurrent stressing instance. Actually it specifies how many CPUs to stress when it's less than available CPUs. load
Integer False Specifies percent loading per worker. 0 is effectively a sleep (no load) and 100 is full loading.
stressngStressors
StressngStressors
defines a plenty of stressors just likeStressors
except that it's an experimental feature and more powerful.You can define stressors in
stress-ng
(see alsoman stress-ng
) dialect.Note:
However, not all of the supported stressors are well tested. It might be retired in later releases. Therefore, it is recommended to use
Stressors
to define the stressors and use this only when you want more stressors unsupported byStressors
.When both
StressngStressors
andStressors
are defined,StressngStressors
wins.
#
UsageBelow is an example YAML file of StressChaos which is set to burn 1 CPU for 30 seconds in every 2 minutes:
Create a namespace for your application. For example,
tidb-cluster-demo
:Create your pods in the target namespace:
Inject a StressChaos:
Then, your pod's CPU will burn for 30 seconds.