Jmeter java.lang.OutOfMemoryError: GC overhead limit exceeded
Jmeter java.lang.OutOfMemoryError: GC overhead limit exceeded
我正在使用 Jmeter 将工作负载注入部署在 AWS EC2 实例上的应用程序。测试必须非常庞大:它持续 10 个小时,工作负载配置文件具有双峰形状,5 分钟内大约有 2600 个请求。实际上,我有一个 m3.xlarge 部署了应用程序的实例和 8 个 m3.xlarge 实例,每个 运行 一个 jmeter 实例。使用 python 脚本,要注入的工作负载被分配到 8 个客户端实例中,因此在示例中,如果原始工作负载注入 800 个请求,则每个 jmeter 实例将注入 100 个请求。正如我所说,完整测试持续 10 小时,并分为每个 5 分钟的时间步长。每 5 分钟应用一点工作量变化。实际上,我从每个 jmeter 实例中得到 java.lang.OutOfMemoryError: GC overhead limit exceeded 错误,在测试开始后立即出现,并且没有请求到达应用程序。我在网上和 Whosebug 上看了很多,我总结出可能的错误可能是:
JMV 堆大小太低-> 我解决了在每个 jmeter 实例的 jmeter.bat 文件中设置以下内容:
设置堆=-Xms4g -Xmx4g
设置 NEW=-XX:NewSize=4g -XX:MaxNewSize=4g
代码中的一些错误导致垃圾收集器继续无用地使用。所以我从我的测试中删除了所有的 jmeter 监听器。特别是我使用了 TableVisualizer、ViewResultsFullVisualizer、StatVisualizer 和 GraphVisualizer。
无论如何问题仍然存在。我真的不知道如何解决它。我知道 10 小时的 2600 音调请求测试可能是一项非常繁重的测试,但我认为应该有一种方法可以执行此操作。我正在使用 EC2 m3.xlarge 实例,所以如果有用的话,我什至可以将堆大小增加到 8G,或者因为我使用的是 spot 实例,所以我可以将工作负载分配给更多的客户端,所以我不会支付太多,但由于我已经将客户端实例的数量从 4 个增加到 8 个以解决问题并且不起作用我有点困惑,我想在继续获得越来越多的资源之前了解 r 建议.
非常感谢您。
您的堆设置看起来不对:
设置 HEAP=-Xms4g -Xmx4g
设置 NEW=-XX:NewSize=4g -XX:MaxNewSize=4g
你的new等于Heap size,这是错误的。先评论新的部分。
你能做一个 ps -eaf|grep java 并显示输出吗?
还要检查您是否尊重这些建议:
- http://jmeter.apache.org/usermanual/best-practices.html
- http://www.ubik-ingenierie.com/blog/jmeter_performance_tuning_tips/
最后,显示您的测试计划概览以及您启动的线程数。
我正在使用 Jmeter 将工作负载注入部署在 AWS EC2 实例上的应用程序。测试必须非常庞大:它持续 10 个小时,工作负载配置文件具有双峰形状,5 分钟内大约有 2600 个请求。实际上,我有一个 m3.xlarge 部署了应用程序的实例和 8 个 m3.xlarge 实例,每个 运行 一个 jmeter 实例。使用 python 脚本,要注入的工作负载被分配到 8 个客户端实例中,因此在示例中,如果原始工作负载注入 800 个请求,则每个 jmeter 实例将注入 100 个请求。正如我所说,完整测试持续 10 小时,并分为每个 5 分钟的时间步长。每 5 分钟应用一点工作量变化。实际上,我从每个 jmeter 实例中得到 java.lang.OutOfMemoryError: GC overhead limit exceeded 错误,在测试开始后立即出现,并且没有请求到达应用程序。我在网上和 Whosebug 上看了很多,我总结出可能的错误可能是:
JMV 堆大小太低-> 我解决了在每个 jmeter 实例的 jmeter.bat 文件中设置以下内容:
设置堆=-Xms4g -Xmx4g
设置 NEW=-XX:NewSize=4g -XX:MaxNewSize=4g
代码中的一些错误导致垃圾收集器继续无用地使用。所以我从我的测试中删除了所有的 jmeter 监听器。特别是我使用了 TableVisualizer、ViewResultsFullVisualizer、StatVisualizer 和 GraphVisualizer。
无论如何问题仍然存在。我真的不知道如何解决它。我知道 10 小时的 2600 音调请求测试可能是一项非常繁重的测试,但我认为应该有一种方法可以执行此操作。我正在使用 EC2 m3.xlarge 实例,所以如果有用的话,我什至可以将堆大小增加到 8G,或者因为我使用的是 spot 实例,所以我可以将工作负载分配给更多的客户端,所以我不会支付太多,但由于我已经将客户端实例的数量从 4 个增加到 8 个以解决问题并且不起作用我有点困惑,我想在继续获得越来越多的资源之前了解 r 建议. 非常感谢您。
您的堆设置看起来不对: 设置 HEAP=-Xms4g -Xmx4g 设置 NEW=-XX:NewSize=4g -XX:MaxNewSize=4g
你的new等于Heap size,这是错误的。先评论新的部分。
你能做一个 ps -eaf|grep java 并显示输出吗?
还要检查您是否尊重这些建议:
- http://jmeter.apache.org/usermanual/best-practices.html
- http://www.ubik-ingenierie.com/blog/jmeter_performance_tuning_tips/
最后,显示您的测试计划概览以及您启动的线程数。