Re: ListPage MySQL OutOfMemory
Re: ListPage MySQL OutOfMemory
- Subject: Re: ListPage MySQL OutOfMemory
- From: Ron X <email@hidden>
- Date: Thu, 10 May 2012 10:49:11 +0300
i have 50M of DB. i don't think that it can take down the instance.
but i set
-Xmx32m
and nothing changed.
i think that is not in settings. that is something fundamental.
any ideas?
2012/5/4 Ramsey Gurley
<email@hidden>
If you are fetching tens of thousands of rows for a list page, you may want to consider using the ERXBatchingDisplayGroup to minimize memory usage. By default, the WODisplayGroup pulls all the EOs into memory. The batching display group uses the database to handle the pagination. It only creates the EO instances for the displayed batch.
If you're using a EODetailDataSource in the list page, the batching display group doesn't work AFAIK. In the case of large to-many relationships though, I would recommend you simply not model it as a relationship and handle it in code. In that case, you'd probably want to place a limit on your fetch spec to prevent all the EOs being pulled into memory. Big to-many relationships tend to cause issues when you addObjectToBothSides anyway.
Ramsey
On May 4, 2012, at 6:58 AM, Ron X wrote:
> i have small database - about 50 Mb...
>
> code:
> ListPageInterface listPage = D2W.factory().listPageForEntityNamed(
> Song.ENTITY_NAME, session());
> EODataSource dataSource = new EODatabaseDataSource(session()
> .defaultEditingContext(), Song.ENTITY_NAME);
> listPage.setDataSource(dataSource);
>
> return (WOComponent) listPage;
>
> and error:
>
> N 19.07 MB used/104.87 MB free [WorkerThread8] (ERXNSLogLog4jBridge.java:43) - <er.extensions.appserver.ERXComponentRequestHandler>: Exception occurred while handling request:
> com.webobjects.foundation.NSForwardException [java.lang.OutOfMemoryError] Java heap space:java.lang.OutOfMemoryError: Java heap space
> [2012-5-4 6:54:11 PDT] <WorkerThread8> com.webobjects.foundation.NSForwardException [java.lang.OutOfMemoryError] Java heap space:java.lang.OutOfMemoryError: Java heap space
> at com.webobjects.foundation.NSForwardException._runtimeExceptionForThrowable(NSForwardException.java:45)
> at com.webobjects.eocontrol.EOEditingContext.handleError(EOEditingContext.java:2971)
> at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4071)
> at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
> at com.webobjects.eoaccess.EODatabaseDataSource.fetchObjects(EODatabaseDataSource.java:589)
> at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
> at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
> at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
> at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
> at er.directtoweb.pages.ERD2WListPage.appendToResponse(ERD2WListPage.java:492)
> at com.webobjects.appserver.WOSession.appendToResponse(WOSession.java:1385)
> at er.extensions.appserver.ERXSession.appendToResponse(ERXSession.java:558)
> at com.webobjects.appserver.WOApplication.appendToResponse(WOApplication.java:1794)
> at er.extensions.appserver.ERXApplication.appendToResponse(ERXApplication.java:1994)
> at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:190)
> at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
> at er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
> at er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
> at er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:374)
> at com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
> at er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2098)
> at er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2063)
> at com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
> at com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
> at java.lang.Thread.run(Thread.java:680)
> Caused by: java.lang.OutOfMemoryError: Java heap space
> at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2145)
> at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1922)
> at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3425)
> at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:481)
> at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3120)
> at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2288)
> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2671)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2621)
> at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842)
> at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
> at com.webobjects.jdbcadaptor.JDBCChannel._bindInputVariablesWithBindingsAndExecute(JDBCChannel.java:272)
> at com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:337)
> at com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
> at com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
> at com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
> at com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
> at com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
> at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:66)
> at com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
> at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
> at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
> at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
> at com.webobjects.eoaccess.EODatabaseDataSource.fetchObjects(EODatabaseDataSource.java:589)
> at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
> at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
> at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
> at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
> at er.directtoweb.pages.ERD2WListPage.appendToResponse(ERD2WListPage.java:492)
> at com.webobjects.appserver.WOSession.appendToResponse(WOSession.java:1385)
> at er.extensions.appserver.ERXSession.appendToResponse(ERXSession.java:558)
> at com.webobjects.appserver.WOApplication.appendToResponse(WOApplication.java:1794)
>
> WARN 19.07 MB used/104.87 MB free [WorkerThread8] (ERXNSLogLog4jBridge.java:43) - Ran out of memory, killing this instance
> FATAL 19.33 MB used/104.61 MB free [WorkerThread8] (ERXApplication.java:1935) - Ran out of memory, killing this instance
> FATAL 19.33 MB used/104.61 MB free [WorkerThread8] (ERXApplication.java:1936) - Ran out of memory, killing this instance
> OutOfMemoryError: Java heap space
> at com.mysql.jdbc.MysqlIO.nextRowFast(MysqlIO.java:2145)
> at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:1922)
> at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3425)
> at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:481)
> at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3120)
> at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2288)
> at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2709)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2671)
> at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2621)
> at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:842)
> at com.mysql.jdbc.StatementImpl.execute(StatementImpl.java:681)
> ... skipped 7 stack elements
> at er.extensions.eof.ERXDatabaseContext._objectsWithFetchSpecificationEditingContext(ERXDatabaseContext.java:66)
> ... skipped 1 stack elements
> at com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
> at com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
> at er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1302)
> ... skipped 1 stack elements
> at com.webobjects.appserver.WODisplayGroup.fetch(WODisplayGroup.java:2132)
> at er.extensions.appserver.ERXDisplayGroup.fetch(ERXDisplayGroup.java:135)
> at er.directtoweb.pages.ERD2WListPage._fetchDisplayGroup(ERD2WListPage.java:461)
> at er.directtoweb.pages.ERD2WListPage.setupPhase(ERD2WListPage.java:561)
> ... skipped 4 stack elements
> Exception in thread "Poller SunPKCS11-Darwin" java.lang.OutOfMemoryError: Java heap space
> at sun.security.pkcs11.wrapper.PKCS11.C_GetSlotInfo(Native Method)
> at sun.security.pkcs11.SunPKCS11.initToken(SunPKCS11.java:767)
> at sun.security.pkcs11.SunPKCS11.access$100(SunPKCS11.java:42)
> at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:700)
> at java.lang.Thread.run(Thread.java:680)
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list (
email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to
email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden