我们目前正在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如果是,你做了什么让它工作?
请询问是否需要更多信息,谢谢。
好吧,这里有更多的信息:
请随时询问更多信息,或者我可以尝试使用各种配置/参数更改进行更多测试,谢谢。
如果这个问题是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),其中包含我的小调查结果。
现在为您提供的解决方法:
cache. xml
文件中的非必要(“可忽略”)空格(并牺牲易读性)。