Good day,
I have created a report that displays all the objects with their attributes as well as all the models with their object occurrences. This report works perfect with all the databases, except one database. This database has 355 980 Objects and 34035 Models. When the report run it fails with the following error message:
When looking at the arisserver_stderr.log file within the log folder of the server, I see the following exception:
report-engine-exception: error running Item.Name(1033): An error occurred in the report object model. - cannot run Attribute(1,1033) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.createException(AArisObject.java:452) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.handleError(AArisObject.java:421) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AArisObject.handleError(AArisObject.java:433) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.getName(AItem.java:1202) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Name(AItem.java:1176) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Name(AItem.java:1216) at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:160) at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:243) at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66) at org.mozilla.javascript.gen.c2._c21(Test:373) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97) at org.mozilla.javascript.gen.c2._c4(Test:66) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.optimizer.OptRuntime.callName(OptRuntime.java:97) at org.mozilla.javascript.gen.c2._c0(Test:17) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:401) at com.idsscheer.report.execution.javascript.AScriptContextFactory.doTopCall(AScriptContextFactory.java:226) at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3003) at org.mozilla.javascript.gen.c2.call(Test) at org.mozilla.javascript.gen.c2.exec(Test) at com.idsscheer.report.execution.interpreter.AJReportInterpreter.openReport(AJReportInterpreter.java:363) at com.idsscheer.report.execution.interpreter.AJReportInterpreter.executeReport(AJReportInterpreter.java:282) at com.idsscheer.aris.server.bl.logic.webreport.scripting.AJavaScriptReportThread.run(AJavaScriptReportThread.java:89) at com.idsscheer.aris.server.bl.logic.webreport.scripting.AJavaScriptRunner.executeReport(AJavaScriptRunner.java:66) at com.idsscheer.aris.server.bl.logic.webreport.reportimpl.AReportProgressAction.run(AReportProgressAction.java:112) at com.idsscheer.aris.server.common.AServerTask$MyRunnable.run(AServerTask.java:61) at java.lang.Thread.run(Thread.java:619) Caused by: report-engine-exception: - cannot run Attribute(1,1033) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Attribute(AItem.java:505) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.getName(AItem.java:1183) ... 28 more Caused by: java.lang.OutOfMemoryError: cannot execute query: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProviderHelper.handleDLException(AObjectProviderHelper.java:59) at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProvider.getAttrs(AObjectProvider.java:168) at com.idsscheer.aris.server.arisomimpl.directctx.ARelationHasAttrAttrDefs.doLoad(ARelationHasAttrAttrDefs.java:21) at com.idsscheer.aris.server.arisomimpl.directctx.ADirectContext.resolveObjects(ADirectContext.java:131) at com.idsscheer.aris.server.arisomimpl.directctx.ARelation.load(ARelation.java:90) at com.idsscheer.aris.server.arisomimpl.directctx.AHasAttr.getAttrs(AHasAttr.java:77) at com.idsscheer.aris.server.arisomimpl.directctx.AHasAttr.getAttr(AHasAttr.java:83) at com.idsscheer.aris.server.arisomimpl.methodctx.AHasAttr.getAttr(AHasAttr.java:277) at com.idsscheer.aris.server.arisomimpl.accessrightctx.AHasAttr.getAttr(AHasAttr.java:176) at com.idsscheer.aris.server.arisomimpl.arisctx.AHasAttr.getAttr(AHasAttr.java:258) at com.idsscheer.aris.server.bl.common.reportobjects.aris.logic.AItem.Attribute(AItem.java:494) ... 29 more Caused by: DLException: cannot execute query: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.executeQuery(APreparedQueryPlan.java:83) at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.execute2(APreparedQueryPlan.java:69) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.prepareAndExecute(AUseCaseExecutor.java:78) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.executePlan2(AUseCaseExecutor.java:113) at com.idsscheer.aris.server.usecasemgt.AUseCaseExecutor.executePlan(AUseCaseExecutor.java:97) at com.idsscheer.aris.server.bl.logic.winpersistenceservice.dbpersistenceprovider.ARelation.execute(ARelation.java:118) at com.idsscheer.aris.server.bl.logic.winpersistenceservice.dbpersistenceprovider.APersistenceServiceImpl.getObjectsByRelation(APersistenceServiceImpl.java:160) at com.idsscheer.aris.server.bl.logic.objectproviderimpl.AObjectProvider.getAttrs(AObjectProvider.java:166) ... 38 more Caused by: com.idsscheer.dl.util.AMemory$ANotEnoughMemoryException: Not enough memory left at server side: max: 2044M, total: 2044M, used: 2036M at com.idsscheer.dl.util.AMemory.checkIfEnoughMemoryLeft(AMemory.java:43) at com.idsscheer.dl.logic.base.qpleng.APreparedQueryPlan.executeQuery(APreparedQueryPlan.java:80) ... 45 more
What can I do to fix this?
I don't know the internal workings of Aris, but I would think that 2GB memory would be enough. You don't need have all the objects and models in memory and you free the memory once you are done with the current object/model.
Thank you.
Hi Freddy,
Thanks for providing the exception log, very helpful. Based on the following line:
Caused by: java
.lang
.OutOfMemoryError
: cannot execute query: Not enough memory left at server side: max:
2044
M, total:
2044
M, used:
2036
M
...it seems like the Java server is running out of memory, not necessarily your physical memory (RAM). ARIS Business Server (7.1 SR9) installs with a default "maxMem" setting of 512mb. Although, based on the log, it looks like this value has already been changed to 2044mb or 2gb (setting is changed in ..\ARIS7.1\server\config\userServerSettings.cfg)
I'm not sure how much physical memory you have on the machine, but there is a danger of performance degradation if you set your "maxMem" setting higher than the amount of physical memory in the machine.
I agree, that 2gb should be plenty (we have ours set to only 1gb), but you *are* dealing with a lot of objects and models, so running a dump of data that large seems like it is exceeding that limit, based on the exception log. We had these errors more frequently before we changed our setting from the default 512 to 1024. If you are able, I would try to set the maxMem setting higher if you are able to do so. Worst case is the server will lock up and need to be restarted so I would try this in your test environment first :)
Hope this helps and please report back your findings!
Regards,
Brian Toops
Cargill, Inc.
ARIS System Analyst
Hi Brian,
Thank you for the reply, with that test I have set the "maxMem" setting of the server to 2048m.
I've also ran a couple more tests since the post, using a machine with 4GB RAM and setting the server maxMem between 3GB and 3.5GB, the results are the same OutOfMemoryError.
Even if I increase the memory to say 6GB and it works, then after a few months the database gets bigger and I start getting the error again, what then? Just keep on increasing the amount of memory allocated. This doesn't sound like an optimal solution.
Looks like Aris is just not handling the memory management very well. This is really sad as the other databases have the potential of also becoming this big and then pretty soon I'll have this problem with all the databases.
Hi,
I have the exact same problem. When I first installed ABS, it took a couple of month for the server to start sending OutOfMemory errors. Then I increased to 1Gb and I had the same problem again. I just increased the allocated memory to 1536m and it's working fine, but untill when?
I've been monitoring my Aris Business Server and I've noticed that memory is not released after running any report. In fact it just keeps on increasing after each report execution, so after a while it will eventually run out of memory again and I'll need to restart the server.
Any ideas?
Thanks in advance
Can you guys provide your version and service release? We are running ARIS 7.1 SR9 and have been having high memory utilization issues with ARIS Business Publisher ever since we upgraded from our previous version, 7.1 SR5. If we are all running the same version, maybe these memory issues will be fixed in the next version, 7.2, which was just released on 4/4/2011. Maybe others on the same version are experiencing this same issue.
This could just be an inherent issue in ARIS. We have found that ARIS does not always scale well with large amounts of data. Even browsing large databases with many groups/models/objects has caused performance issues in Business Architect/Designer, but they are getting better.
If you haven't done so already, I would open a ticket with ARIS support to see if there is anything they recommend.
Best regards,
Brian Toops
Cargill, Inc.
ARIS System Analyst
A co-worker of mine who does ARIS scripting passed on this link to me under the . Just to look at this issue of memory usage from the perspective of the script itself:
http://www.ariscommunity.com/users/maikoliv/2011-03-24-return-report-allocated-memory#comment-9050
Regards,
Brian Toops
Cargill, Inc.
ARIS System Analyst