【问题标题】:java.lang.OutOfMemoryError: GC overhead limit exceeded on WSO2 MBjava.lang.OutOfMemoryError:超过 WSO2 MB 的 GC 开销限制
【发布时间】:2016-09-01 08:45:36
【问题描述】:

我最近一直在使用WSO2 Message Broker(版本:3.1.0),以便使用JMeter 作为jms 客户端发布和使用消息。所以我有我的发布者 Java 程序,我从中发布消息,我试图每秒发布 4000 条消息。如有必要,我可以提供 sn-p。

我通过在无头模式下运行JMeter 命令jmeter -n -t C:\Users\ctsadmin\Downloads\wso2MB\apache-jmeter-2.13\bin\GamesSubscriber.jmx -l C:\Users\ctsadmin\Downloads\wso2MB\apache-jmeter-2.13\bin\mytest_results.jtl 来使用这些消息。我还打开了VisualVmwindow,以查看测试的内存消耗。根据下图,前 15 分钟发布和消费都还可以,但之后,VisualVm 突然出现炒作并耗尽内存。我在下面附上VisualVM 的截图。

我也使用JProfiler 检查了WSO2 MBheap dump。也附上了它的截图。

可能是什么问题?我应该做出哪些改变?比如增加heap 的大小?任何帮助将不胜感激。

编辑:我在hereby 附加日志文件和堆转储。

【问题讨论】:

  • 您能告诉您配置的后端存储吗?它是默认的 H2 数据库还是其他 RDBMS 存储?对我来说,似乎数据库无法处理负载,并且根据 JProfiler 堆转储分析它已脱机。在这种情况下,MB 将启用基于全局错误的流量控制,并且不接受来自外部的流量。但我需要更多详细信息来确定确切的根本原因,例如 wso2carbon.log 文件和堆转储。
  • 这是默认的 H2 数据库。我已在问题的已编辑部分附加了日志文件和转储。

标签: java garbage-collection wso2 messagebroker wso2mb


【解决方案1】:

增加堆大小

是要走的路。但是您还必须检查如何进行分发测试;因为 12000 是一个大测试,不能单独在一台机器上运行;这不是一个好习惯。

http://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.pdf

【讨论】:

  • wso2mb bat 文件增加堆大小确实有效。即-Xmx6g
猜你喜欢
  • 2017-12-27
  • 2020-09-08
  • 2020-07-24
  • 1970-01-01
  • 2019-06-29
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多