cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Morrison, John" <John.Morri...@uk.experian.com>
Subject RE: [C2] sitemap creation threading issue ?
Date Mon, 20 Aug 2001 11:47:00 GMT
Hi all, esp Marcus,

I too have been running Load tests, I also noticed that 'something' was
happening regularly to slow the response.  I hadn't gotten round to checking
the code though (the testing machines are isolated - 0 access from/to my dev
station).

I saw your patch and rejoiced ;) but it's taken the response of some of my
pages from a couple of hundred milliseconds to over 5!  I've not yet looked
at _what_ your patch did, but have you seen a similar increase in time?

J.

> -----Original Message-----
> From: Carsten Ziegeler [mailto:cziegeler@sundn.de]
> Sent: Monday, 20 August 2001 7:57 am
> To: cocoon-dev@xml.apache.org
> Subject: AW: [C2] sitemap creation threading issue ?
> 
> 
> Hi Marcus,
> 
> thanks for your patch. I applied it, please cross check :-)
> 
> Carsten
> 
> > -----Ursprungliche Nachricht-----
> > Von: Marcus Crafter [mailto:crafterm@fztig938.bank.dresdner.net]
> > Gesendet: Samstag, 18. August 2001 22:41
> > An: Cocoon Developers Mailing List
> > Betreff: [C2] sitemap creation threading issue ?
> > 
> > 
> > Hi *,
> > 
> > 	Hope all is well.
> > 
> > 	Michael and I have spent the day testing our C2 application with
> > 	LoadRunner and have potentially uncovered a threading 
> problem during
> > 	sitemap creation.
> > 
> > 	We're not experts with the code but from our understanding the
> > 	following is happening, please let us know if we are 
> right/wrong:
> > 
> > 	There seems to be a problem with the getHandler() 
> method, located in
> > 	the sitemap Manager class (line 154). getHandler() attempts 
> > to access a
> > 	sitemap handler object for each request for processing. If 
> > the handler
> > 	object is not available it creates one, causing the 
> sitemap to be
> > 	generated.
> > 
> > 	We've noticed under load, that many handler objects are 
> created for
> > 	the same sitemap. This is because getHandler() does not 
> protect the
> > 	following lines:
> > 
> > 		Handler sitemapHandler = (Handler)sitemaps.get(source);
> > 
> > 	and
> > 
> > 		sitemaps.put(source, sitemapHandler);
> > 
> > 	as a critical area.
> > 
> > 	If multiple concurrent threads pass through 
> getHandler() which are
> > 	requests for resources from the same sitemap, the first line
> > 	above will return null multiple times causing the same 
> sitemap to be
> > 	compiled several times, each by individual Handler objects.
> > 	
> > 	This happens because sitemaps.put() executes after each 
> > sitemap handler
> > 	object is created (which can take time for large sitemaps), 
> > and cannot
> > 	prevent other incoming threads from waiting until it 
> adds the newly
> > 	created handler object into the 'sitemaps' hashmap.
> > 
> > 	When we synchronized the getHandler method to protect the
> > 	getting/setting of the sitemaps hashmap, we saw that the sitemap
> > 	handler object was created only once, and that the application
> > 	performed much better under load. Previously the same 
> > sitemap handler
> > 	object was created as many times as we had simultaneous threads
> > 	make requests.
> > 
> > 	Attached is a diff of the change we made. There might 
> be a better
> > 	solution as the Handler class seems to be built to 
> handle this, it's
> > 	just that the allocation of a new Handler objects per 
> > sitemap, defeats
> > 	it's internal multi-thread logic.
> > 
> > 	Any comments/thoughts/suggestions ?
> > 
> > 	Cheers,
> > 
> > 	Marcus
> > 
> > -- 
> >         .....
> >      ,,$$$$$$$$$,      Marcus Crafter
> >     ;$'      '$$$$:    Computer Systems Engineer
> >     $:         $$$$:   Open Software Associates GmbH
> >      $       o_)$$$:   82-84 Mainzer Landstrasse
> >      ;$,    _/\ &&:'   60327 Frankfurt Germany
> >        '     /( &&&
> >            \_&&&&'     Email : Marcus.Crafter@osa.de
> >           &&&&.        Business Hours : +49 69 9757 200
> >     &&&&&&&:
> > 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
> For additional commands, email: cocoon-dev-help@xml.apache.org
> 


=======================================================================
Information in this email and any attachments are confidential, and may
not be copied or used by anyone other than the addressee, nor disclosed
to any third party without our permission.  There is no intention to
create any legally binding contract or other commitment through the use
of this email.

Experian Limited (registration number 653331).  
Registered office: Talbot House, Talbot Street, Nottingham NG1 5HF

---------------------------------------------------------------------
To unsubscribe, e-mail: cocoon-dev-unsubscribe@xml.apache.org
For additional commands, email: cocoon-dev-help@xml.apache.org


Mime
View raw message