0

我们目前正在 Linux 上的几个平台以及不同的 Java 发行版上测试 Apache Geode。使用 IBM Java 时出现了一个问题,即启动和性能都非常(至少可以说)很差。跨系统的配置是相同的,但是当我们尝试在 RedHat 下的 x86 平台上运行它时,我们甚至无法让 Geode 正常启动。

定位器首先启动,但是在 GFSH CLI 界面中没有收到 up 消息,只是一个连续的“。”流。但是通过查看日志可以确定它何时开始并输入 CTRL+C 以便可以继续。

启动服务器会产生类似的问题,但服务器永远不会启动的次数往往更多。如果你最终设法让它启动,经过多次尝试,那么一旦你开始用工作负载给它施加压力,它很可能会崩溃。

以下日志摘录显示了不同类型的错误:


com.ibm.tools.attach.AttachNotSupportedException:在 com.ibm.tools.attach.javaSE.VirtualMachineImpl.attachTarget( VirtualMachineImpl.java:94) 在 com.ibm.tools.attach.javaSE.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:37) 在 ibm.tools.attach.J9AttachProvider.attachVirtualMachine(J9AttachProvider.java:55) 在 com.sun.tools .attach.VirtualMachine.attach(VirtualMachine.java:231) ... Cache Server 进程意外终止,退出状态为 1。有关详细信息,请参阅 /home/geode/server1 中的日志文件。

注意:无法查看日志,因为从未创建过!

线程“主”com.gemstone.gemfire.InternalGemFireError 中的异常:没想到堆栈顶部有 java.lang.StringBuffer。在 com.gemstone.gemfire.internal.Assert.throwError(Assert.java:91) 在 com.gemstone.gemfire.internal.Assert.assertTrue(Assert.java:115) 在 com.gemstone.gemfire.internal.cache.xmlcache .CacheXmlParser.endRegionAttributes(CacheXmlParser.java:1449) 在 com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser.endElement(CacheXmlParser.java:3190) 在 com.gemstone.gemfire.internal.cache.xmlcache.CacheXmlParser$DefaultHandlerDelegate .endElement(CacheXmlParser.java:3726) 在 org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source) ...


快速浏览了源代码后,似乎 IBM Java 没有得到很好的支持,我认为成功启动定位器的这条消息支持:

Java 版本早于 1.7.0_72。未满足最低系统要求。意外行为可能会导致其他错误。

除了上面的错误,当我们设法让它在其他硬件和操作系统上运行时,性能非常差,事务(TPS)率非常糟糕。

我的问题基本上是,有没有人成功地将 Geode 与 IBM Java 一起使用,如果是,你做了什么让它工作?

请询问是否需要更多信息,谢谢。


好的,这里有更多信息:

  • 使用的平台是 x86 和 z13s(IBM 大型机),并且都运行 RHEL 7.2。两个系统都配置了相同数量的处理器和内存
  • IBM Java, JDK 8 用于两者
  • OpenJDK 和 Oracle Java 的性能相当不错,但 IBM Java 的性能很差。例如,在一项测试中,我们看到 OpenJDK 和 Oracle 大约 10,000 TPS,而 IBM 只有 400。尽管 z13s 上的 IBM Java 比 x86 上的 IBM Java 好一点点
  • Geode 几乎是开箱即用的,对于 IBM z13s,使用以下说明来构建它:https ://github.com/linux-on-ibm-z/docs/wiki/Building-Apache-Geode?cm_mc_uid= 66676540165814848933028&cm_mc_sid_50200000=1484812636
  • 使用的主要配置是 1 个定位器、4 个服务器和 2 个区域,并且 YCSB 基准是驱动程序。还使用了一些其他配置,但性能没有变化
  • 我们还在 z13s 上尝试了最新的孵化 M3(我认为这是最新的),并尝试使用 IBM Java 9 的 beta 版本构建它,但它甚至无法构建

随时询问更多信息,或者我可以尝试通过各种配置/参数更改进行更多测试,谢谢。

4

2 回答 2

0

如果此问题与 IBM jdk 或 gfsh 有关,要缩小范围,您能否尝试以编程方式启动缓存服务器?例如,以下将启动带有嵌入式定位器的服务器:

CacheFactory cf = new CacheFactory();
cf.set("start-locator", "localhost[10334]");
Cache cache = cf.create();
cache.addCacheServer();

从其他进程中,您可以指向上面的定位器。

CacheFactory cf = new CacheFactory();
cf.set("locators", "localhost[10334]");
Cache cache = cf.create();
cache.addCacheServer();
于 2017-01-24T18:01:31.043 回答
0

我遇到了同样的问题;我怀疑 Geode(当前)与官方 Apache Xerces 实现(IBM Java 使用)不兼容。

我已经提交了一个 JIRA 问题(https://issues.apache.org/jira/browse/GEODE-3306),其中包含我的小调查结果。

现在为您提供的解决方法:

  1. 删除文件中非必要的(“可忽略的”)空格cache.xml(并牺牲可读性)。
  2. 下载与 Geode 兼容的 Oracle JDK 内部 Xerces 实现 ( http://central.maven.org/maven2/com/sun/xml/parsers/jaxp-ri/ )。
于 2017-07-28T16:50:48.467 回答