我有一个特别麻烦的XPage应用程序,可以完全重写,但事实上,在过去几年中已经开发和(部分)改进,试图保持它顺利运行。它越来越慢,但是我昨晚做了2次更改,今天早上我注意到控制台上出现了很多JVM错误。
删除了所有用于显示视图数据的jQuery Repeat控件表,并将其替换为ViewPanels;这些在加载和渲染包含大量文档的视图时要快得多。
将页面持久性从“保留在磁盘上”更改为“将当前页面保留在内存中” - 希望这也有助于加快速度。
今天我看到很多错误,如:
HTTP JVM:无法打开数据库:com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c。更详细的
旧数据库的Archive Db支持主数据库,通过将数据路径指向存档,在主数据库的UI中加载。还有另一个数据库包含许多主要前端UI数据库引用的小型支持文档。所以有其他dbs的链接,这些链接对我和许多其他用户都有用。我需要帮助来追踪一些人导致上述错误的原因。链接到此应用程序的所有数据库上的ACL都是相同的,它们都在同一服务器上,ACL也包含服务器作为所有数据库中的管理器。
第二个问题是速度。前端数据库中有大约30,000个文档,大小约为25GB。这些视图需要大约4-5秒才能加载,实际上在该数据库中处理大约需要4-5秒。在同一台服务器上的另一个UI副本,但修改为使用主数据库为它的数据加载一切闪电快速。我想要我的应用程序的性能!为什么使用主慢数据库中的数据的单独数据库会比较快?是否有最佳实践指南说将设计与数据分开是个好主意?
这是Web浏览器中的典型错误消息:
这是服务器日志中的一组典型消息(error-log-0.xml)
<CommonBaseEvent creationTime="2015-07-08T07:07:43.841+01:00" globalInstanceId="EL0a940d8600014e6b9ee19b00000019" msg="CLFAD0131E: Unable to push data because: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a" severity="50" version="1.0.1">
<extendedDataElements name="CommonBaseEventLogRecord:level" type="noValue">
<children name="CommonBaseEventLogRecord:name" type="string">
<values>SEVERE</values>
</children>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:sourceClassName" type="string">
<values>com.ibm.commons.log.AbstractLogMgr</values>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:sourceMethodName" type="string">
<values>log</values>
</extendedDataElements>
<extendedDataElements name="CommonBaseEventLogRecord:Exception" type="string">
<values>com.ibm.xsp.FacesExceptionEx: Unable to open database: com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a
	at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:188)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.openDatabase(DominoViewDataContainer.java:880)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.openView(DominoViewDataContainer.java:814)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.getDominoView(DominoViewDataContainer.java:802)
	at com.ibm.xsp.model.domino.DominoViewDataContainer.getView(DominoViewDataContainer.java:797)
	at com.ibm.xsp.model.domino.DominoViewData.getDataObject(DominoViewData.java:274)
	at com.ibm.xsp.model.AbstractDataSource.pushData(AbstractDataSource.java:576)
	at com.ibm.xsp.util.DataPublisher.publishControlData(DataPublisher.java:181)
	at com.ibm.xsp.component.UIDataPanelBase.publishControlData(UIDataPanelBas</values>
<values>e.java:310)
	at com.ibm.xsp.component.UIDataPanelBase.encodeBegin(UIDataPanelBase.java:246)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:840)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.util.FacesUtil.renderComponent(FacesUtil.java:851)
	at com.ibm.xsp.component.UIViewRootEx._renderView(UIViewRootEx.java:1317)
	at com.ibm.xsp.component.UIViewRootEx.renderView(UIViewRootEx.java:1255)
	at com.ibm.xsp.application.ViewHandlerExImpl.doRender(ViewHandlerExImpl.java:641)
	at com.ibm.xsp.application.ViewHandlerExImpl._renderView(ViewHandlerExImpl.java:320)
	at com.ibm.xsp.application.ViewHandlerExImpl.renderView(</values>
<values>ViewHandlerExImpl.java:335)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:103)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:210)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:120)
	at com.ibm.xsp.controller.FacesControllerImpl.render(FacesControllerImpl.java:264)
	at com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:248)
	at com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:204)
	at com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160)
	at com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)
	at com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:583)
	at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFCo</values>
<values>mponentModule.java:1281)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:860)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:803)
	at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:572)
	at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1265)
	at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:658)
	at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:481)
	at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:341)
	at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:297)
	at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)
Caused by: com.ibm.xsp.Fa</values>
<values>cesExceptionEx: Database com.ibm.xsp.binding.javascript.JavaScriptValueBinding@304a304a cannot be opened
	at com.ibm.xsp.model.domino.DominoUtils.doOpenDatabase(DominoUtils.java:240)
	at com.ibm.xsp.model.domino.DominoUtils.openDatabaseByName(DominoUtils.java:177)
	... 40 more
</values>
</extendedDataElements>
<sourceComponentId component="Expeditor 6.2" componentIdType="ProductName" instanceId="" location="EU1RLNW012" locationType="Hostname" subComponent="" threadId="6" componentType="http://www.w3.org/2001/XMLSchema-instance"/>
<situation categoryName="ReportSituation">
<situationType xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ReportSituation" reasoningScope="INTERNAL" reportCategory="LOG"/>
</situation>
答案 0 :(得分:0)
好吧,我还没有找到确切的原因,只有页面持久性与它有关。我仍然不知道为什么它报告它无法打开数据库:com.ibm.xsp.binding.javascript.JavascriptValueBinding@3b2c3b2c"而不是一个能说出数据库路径是什么的正常消息。因此,我无法跟踪代码的哪些部分导致此错误,因为记录的消息并非完全有用。
但是将页面持久性设置回Keep on Disk解决了它并且错误不再存在。