gpt4 book ai didi

java - Jmeter java.lang.OutOfMemoryError : GC overhead limit exceeded 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:12 25 4
gpt4 key购买 nike

我正在使用 Jmeter 将工作负载注入(inject)部署在 AWS EC2 实例上的应用程序。测试必须非常庞大:它持续 10 个小时,工作负载配置文件具有双峰形状,5 分钟内大约有 2600 个请求。实际上我有一个部署了应用程序的 m3.xlarge 实例和 8 个 m3.xlarge 实例,每个实例都运行一个 jmeter 实例。使用 python 脚本,要注入(inject)的工作负载被分配到 8 个客户端实例中,因此在示例中,如果原始工作负载注入(inject) 800 个请求,则每个 jmeter 实例将注入(inject) 100 个请求。正如我所说,完整测试持续 10 小时,并分为每个 5 分钟的时间步长。每 5 分钟应用一点工作量变化。实际上,我从每个 jmeter 实例中得到 java.lang.OutOfMemoryError: GC overhead limit exceeded 错误,在测试开始后立即出现并且没有请求到达应用程序。我在网上和 stackoverflow 上看了很多,我得出结论,可能的错误可能是:

  • 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 个来解决问题并且不起作用我有点困惑,我想在继续获得越来越多的资源之前了解一些建议。非常感谢您。

最佳答案

您的堆设置看起来不对:设置 HEAP=-Xms4g -Xmx4g设置 NEW=-XX:NewSize=4g -XX:MaxNewSize=4g

你的 new 等于 Heap size,这是错误的。首先评论新部分。

你能做一个 ps -eaf|grep java 并显示输出吗?

并确保您遵守这些建议:

最后,展示您的测试计划概览以及您启动的线程数。

关于java - Jmeter java.lang.OutOfMemoryError : GC overhead limit exceeded 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28694480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com