cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leszek Gawron <>
Subject Re: big ESQL performance problem
Date Tue, 04 Mar 2003 15:08:18 GMT
On wto, mar 04, 2003 at 08:12:25 -0600, Antonio Gallardo wrote:
> Hi!
> Everybody try to fight against this. :-D
> Please note that ESQL is fast enough. It can build the 8,000 rowset in
> milisecs.
> Problem starts when the rowset go trought some XSL transformations and
> serialization.
> The worse if that after you render this to HTML. The client browser can
> spend more than this 3.5 to render all of this. I made some test and for
> 10,000 rows. It can take more than 5 mins on a Pentium IV 2.0 GHz with 256
> MB of RAM to render it after Cocoon sent back the HTML page! In a slower
> computer with less memory it can takes more than 15 mins!
> Please note that this is not a ESQL issue. This is just related to ESQL. I
> think if you can build a page with 8,000 rows without using ESQL you will
> get the same result.
> To workaround this issue you must "paginate" the responses instead of
> responde with a big bulk of data. I think people will not read all the
> 8,000 or more rows. :-D
Let me describe what I do:
1. The client is NOT a browser - it's an application on mobile device so data
amount is not a problem. 

2. I'm not using cocoon for presenting data but for a unified xml frontend to
various databases (my application has to plug into many exsting database

3. I have no problem at all to fetch even more data from MS SQL Server or
Sybase. 5k rows gets processed by cocoon in 10 seconds which is fine for me
(with additional nodes -> attributes transformation!!).

4. The output file is about 1Mb big which is compressed by mod_gzip to about
7% of original size.

Summing up: cocoon is able to generate 1MB xml file with about 5k database
rows on PIII 800 MHz without any performance/memory tuning.

The only difference is while working with pervasive:
1. When using Squirell running 
select * from table (5.5k rows, 30 columns) I get response:
Query 1 elapsed time (seconds) - Total: 7,381, SQL query: 0,07, Building
output: 7,311

2. Same query run by cocoon:
INFO    (2003-03-04) 16:03.13:573   [access]
(/romes/data-old/contractors-offline-bug) Thread-6/CocoonServlet:
'romes/data-old/contractors-offline-bug' Processed by Apache Cocoon 2.1-dev in
9.93095 minutes

(this query is much bigger then the previous one I tested it on)

My sitemap entries are simple: match, generate type="serverpages", serialize
to xml. nothing more.

News from just a while ago: I've been monitoring CPU usage. It's not cocoon
which consumes most of CPU while fetching these data but pervasive. So I think
you should consider that esql performs too much database interaction (from
what I saw it does not cache metadata information and fetches it with every
row. Is there a way to omit esql use metadata ?

Or just plain stupid: There is something row with result set traversal (i.e.
fetching row x every time starts from skipping previous rows 

I will have to run another test: Obtain a connection from pool and to it in
pure JDBC omitting esql. If that runs fast it's got to be ESQL
         | /  \ |        Leszek Gawron            //  \\
        \_\\  //_/          _\\()//_
         .'/()\'.     Phone: +48(600)341118     / //  \\ \
          \\  //  recursive: adj; see recursive  | \__/ |

View raw message