本文列出了虚拟机常见的故障演练场景。
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路径下查看日志。 |