本文列出了虚拟机常见的故障演练场景。

JvmCodeCache 满

制造 JVM CodeCache 区域满的故障,CodeCache 区域满会直接导致 JIT 编译关闭,从而引起业务系统性能下降。一般用于验证业务系统在高并发且系统性能下降的情况下,是否能够通过限流、快速扩容等手段保证业务连续性。

参数说明如下:

参数名称 是否必选 默认值 参数说明
进程 ID 必选其一 Java 进程的 ID。
进程关键字 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用 ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。
开启 Debug 选择是否开启 Debug 日志,用于排查演练执行过程中遇到的问题。开启 debug 后,请到 ~/logs/chaosblade/chaosblade.log 路径下查看日志。

Java 产生 OutOfMemoryError 异常

填充 JVM 指定的内存区域,导致指定内存区域空间不足,引发 OOM 异常。

参数说明如下:

参数名称 是否必选 默认值 参数说明
内存区域 指定填充的JVM内存区域,可选项:新生代、老生代(MetaSpace)、堆外内存。
暴力模式 False 是否开启暴力模式,如果是暴力模式,在OOM发生之后也不会释放之前创建的内存,可能会引起应用进程无响应。
时间间隔 两次 OOM 异常间的时间间隔,只有在非暴力模式才生效,可以减缓 GC 的频率,避免因频繁的 FullGC 导致进程无响应。
数据块大小(MB) 每次填充内存的数据块大小,仅当内存区域选择新生代或堆外内存时生效。
进程 ID 必选其一 Java 进程的 ID。
进程关键字 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用 ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。
开启 Debug 选择是否开启debug日志,用于排查演练执行过程中遇到的问题。开启 debug 后,请到 ~/logs/chaosblade/chaosblade.log 路径下查看日志。

Java 应用内部制造 CPU 满载

Java 应用进程内制造 CPU 满载,表现为 Java 应用本身原因导致 CPU 高负载。

参数名称 是否必选 默认值 参数说明
指定 CPU 满载的个数 指定 CPU 满载的个数,默认系统当前全部核数。
进程 ID 必选其一 Java 进程的ID。
进程关键字 用于识别唯一的关键字,可以通过该关键字查找到唯一进程,使用 ps -ef | grep <key> 来尝试查找进程,能找到唯一进程则正确。
开启 Debug 选择是否开启 Debug 日志,用于排查演练执行过程中遇到的问题。开启 Debug 后,请到 ~/logs/chaosblade/chaosblade.log 路径下查看日志。