提问者:小点点

Apache Geode和IBMJava


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

首先启动一个定位器,但是在GFSHCLI接口中没有收到任何向上消息,只是一个连续的“.”流,但是通过查看日志,可以确定它何时启动并输入CTRL C以便可以继续。

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

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

com.ibm.toolscom.ibm.tools. attach.javaSE.VirtualMachineImpl.tryAttachTarget(VirtualMachineImpl.java:369)在com.ibm.tools.attach.javaSE.VirtualMachineImpl.attachTarget(VirtualMachineImpl.java:94)在ibm.tools.attach.J9AttachProvider.attachVirtualMachine(J9AttachProvider.java:55)在com.sun.tools.attach.VirtualMachine.attachVirtualMachine(VirtualMachine.java:231)…缓存服务器进程意外终止,退出状态为1。有关详细信息,请参阅 /home/geode/server1中的日志文件。

线程"main"中的异常com. gemstone.gemfire.InternalGemFireError:不期望堆栈顶部的java.lang.StringBuffer(CacheXmlParser.java:3190)位于org.apache.xercs.parser.AbstractSAXParser.endElement(未知来源)…

快速浏览了一下源代码,似乎IBMJava没有得到很好的支持,我认为这个消息在定位器的成功启动中支持:

Java早于1.7的版本。0_72。未满足最低系统要求。意外行为可能导致额外错误。

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

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

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

好吧,这里有更多的信息:

  • 使用的平台是x86和z13s(IBM大型机),都运行RHEL 7.2。两个系统都配置了相同数量的处理器和内存
  • IBMJava,JDK8都用到了
  • OpenJDK和OracleJava的性能相当不错,但IBMJava就很糟糕。例如,在一次测试中,我们看到OpenJDK和Oracle大约有10,000TPS,而IBM只有400TPS。IBMJava尽管z13s比x86上的IBMJava好一点
  • Geode几乎是开箱即用的,IBMz13s使用以下指令来构建它:https://github.com/linux-on-ibm-z/docs/wiki/Building-Apache-Geode?cm_mc_uid=66676540165814848933028

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


共2个答案

匿名用户

如果这个问题是IBMjdk或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();

匿名用户

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

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

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

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