Simulate Stress Scenarios

    This section describes how to create stress experiments using the command-line mode.

    Before creating stress experiments, you can run the following command to view the stress experiment types supported by Chaosd:

    The result is as follows:

    1. Usage:
    2. chaosd attack stress [command]
    3. Available Commands:
    4. cpu continuously stress CPU out
    5. mem continuously stress virtual memory out
    6. Flags:
    7. -h, --help help for stress
    8. Global Flags:
    9. --log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'
    10. Use "chaosd attack stress [command] --help" for more information about a command.

    Currently, Chaosd supports creating CPU stress experiments and memory stress experiments.

    Command for simulating CPU stress

    To view the configuration items supported by the CPU stress simulation, run the following command:

    1. chaosd attack stress cpu --help

    The result is as follows:

    1. continuously stress CPU out
    2. Usage:
    3. chaosd attack stress cpu [options] [flags]
    4. Flags:
    5. -h, --help help for cpu
    6. -l, --load int Load specifies P percent loading per CPU worker. 0 is effectively a sleep (no load) and 100 is full loading. (default 10)
    7. -o, --options strings extend stress-ng options.
    8. -w, --workers int Workers specifies N workers to apply the stressor. (default 1)
    9. --log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'

    Configuration description for simulating CPU stress

    Example for simulating CPU stress

    1. chaosd attack stress cpu --workers 2 --load 10
    1. [2021/05/12 03:38:33.698 +00:00] [INFO] [stress.go:66] ["stressors normalize"] [arguments=" --cpu 2 --cpu-load 10"]
    2. [2021/05/12 03:38:33.702 +00:00] [INFO] [stress.go:82] ["Start stress-ng process successfully"] [command="/usr/bin/stress-ng --cpu 2 --cpu-load 10"] [Pid=27483]

    Command for simulating memory stress

    To view the configuration items supported by the memory stress simulation, run the following command:

    The result is as follows:

    1. continuously stress virtual memory out
    2. Usage:
    3. chaosd attack stress mem [options] [flags]
    4. Flags:
    5. -h, --help help for mem
    6. -o, --options strings extend stress-ng options.
    7. -s, --size string Size specifies N bytes consumed per vm worker, default is the total available memory. One can specify the size as % of total available memory or in units of B, KB/KiB, MB/MiB, GB/GiB, TB/TiB..
    8. Global Flags:
    9. --log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'

    Configuration description for simulating memory stress

    Example for simulating memory stress

    The result is as follows:

    1. [2021/05/12 03:37:19.643 +00:00] [INFO] [stress.go:66] ["stressors normalize"] [arguments=" --vm 2 --vm-keep --vm-bytes 100000000"]
    2. [2021/05/12 03:37:19.654 +00:00] [INFO] [stress.go:82] ["Start stress-ng process successfully"] [command="/usr/bin/stress-ng --vm 2 --vm-keep --vm-bytes 100000000"] [Pid=26799]
    3. Attack stress mem successfully, uid: c2bff2f5-3aac-4ace-b7a6-322946ae6f13

    When running the experiment, you need to save the uid information of the experiment. When a stress simulation is not needed, you can use recover to terminate the uid-related experiment::

    1. chaosd recover c2bff2f5-3aac-4ace-b7a6-322946ae6f13

    The result is as follows:

    1. Recover c2bff2f5-3aac-4ace-b7a6-322946ae6f13 successfully

    Create stress experiments using the service mode

    To create experiments using the service mode, follow the instructions below:

    1. Send a POST HTTP request to the /api/attack/{uid} path of Chaosd service.

      1. curl -X POST 172.16.112.130:31767/api/attack/jvm -H "Content-Type:application/json" -d '{fault-configuration}'

      For the fault-configuration part in the above command, you need to configure it according to the fault types. For the corresponding parameters, refer to the parameters and examples of each fault type in the following sections.

    note

    When running an experiment, remember to save the UID information of the experiment. When you want to kill the experiment corresponding to the UID, you need to send a DELETE HTTP request to the /api/attack/{uid} path of Chaosd service.

    Parameters for simulating CPU stress

    Example for simulating CPU stress using the service mode

    1. curl -X POST 172.16.112.130:31767/api/attack/stress -H "Content-Type:application/json" -d '{"load":10, "action":"cpu","workers":1}'

    The result is as follows:

    1. {"status":200,"message":"attack successfully","uid":"c3c519bf-819a-4a7b-97fb-e3d0814481fa"}

    Parameters for simulating memory stress

    Example for simulating memory stress using the service mode

    The result is as follows: