I did. See the stacktrace in my initial post.
On Apr 13, 2015 3:18 PM, "Tim Watts" <[email protected]> wrote:

> Have you put the app under a profiler to see what components are taking
> the most time in each container?  Seems like the best way to get some
> facts on the table.
>
>
> On Sun, 2015-04-12 at 23:50 +0200, Øyvind Harboe wrote:
> > Hi,
> >
> > I'm having problems with performance degrading dramatically when I
> > deploy our application to a Tomcat container. The application uses
> > Apache Cayenne ORM on top of Derby.
> >
> > Does anyone have any pointers on how I can debug this to figure out
> > what I'm doing wrong?
> >
> > Generating a report which includes ca. 100 queries and thousands of
> > records takes less than one second on Jetty, but in the Tomcat
> > container it takes more than 10 seconds, so a 10x slowdown or so.
> >
> > I can't believe that Jetty is 10x faster than Tomcat.
> >
> > I've tried to figure out what the differences are between these two
> > environments without luck.
> >
> > Jetty and Tomcat are equal in terms of:
> >
> > - same VM options
> > - debug vs. non-debug mode
> > - tests run on same machine side-by-side
> > - same database files(copied to another location on the harddisk)
> >
> > Some differences:
> >
> > - Jetty is using  org.apache.cayenne.conn.PoolManager rather than
> > Tomcat's connection pools.
> >
> >
> > When I suspend Tomcat in the debugger, the typical stack trace is
> > something about fetching pages:
> >
> >
> > BaseContainerHandle(Observable).addObserver(Observer) line: 82
> > StoredPage(BasePage).preLatch(BaseContainerHandle) line: not available
> > StoredPage(BasePage).setExclusive(BaseContainerHandle) line: not
> available
> > RAFContainer4(BaseContainer).latchPage(BaseContainerHandle, BasePage,
> > boolean) line: not available
> > RAFContainer4(FileContainer).latchPage(BaseContainerHandle, BasePage,
> > boolean) line: not available
> > RAFContainer4(FileContainer).getUserPage(BaseContainerHandle, long,
> > boolean, boolean) line: not available
> > RAFContainer4(FileContainer).getPage(BaseContainerHandle, long,
> > boolean) line: not available
> > BaseContainerHandle.getPage(long) line: not available
> > OpenHeap(OpenConglomerate).latchPage(RowPosition) line: not available
> > HeapController(GenericConglomerateController).fetch(RowLocation,
> > DataValueDescriptor[], FormatableBitSet) line: not available
> > IndexRowToBaseRowResultSet.getNextRowCore() line: not available
> > ProjectRestrictResultSet.getNextRowCore() line: not available
> > NestedLoopJoinResultSet.getNextRowCore() line: not available
> > ProjectRestrictResultSet.getNextRowCore() line: not available
> > SortResultSet.getRowFromResultSet() line: not available
> > SortResultSet.getNextRowFromRS() line: not available
> > SortResultSet.loadSorter() line: not available
> > SortResultSet.openCore() line: not available
> > SortResultSet(BasicNoPutResultSetImpl).open() line: not available
> > GenericPreparedStatement.executeStmt(Activation, boolean, boolean,
> > long) line: not available
> > GenericPreparedStatement.execute(Activation, boolean, long) line: not
> > available
> > EmbedPreparedStatement(EmbedStatement).executeStatement(Activation,
> > boolean, boolean) line: not available
> > EmbedPreparedStatement.executeStatement(Activation, boolean, boolean)
> > line: not available
> > EmbedPreparedStatement.executeQuery() line: not available
> > SelectAction.performAction(Connection, OperationObserver) line: 75
> > DataNodeQueryAction.runQuery(Connection, Query) line: 87
> >
> >
>
>
>

Reply via email to