So changing the page pool parameters didn't help then? 

> -----Original Message-----
> From: Peter Stavrinides [mailto:[EMAIL PROTECTED] 
> Sent: Tuesday, August 28, 2007 10:34 AM
> To: Tapestry users
> Subject: Re: Memory consumption in T4.1.2 - Hard data
> 
> 
> Andreas, give me a break! I am not trying to trash Tapestry 
> if that's what you are thinking. I am not the only one 
> experiencing these problems.
> Have a look at some of my postings (and others posts) and you 
> will see what I am talking about. I have been having these 
> problems since upgrading from 4.1.1 I never experienced these 
> problems before with uptime of months at a time.
> 
> Look at this log, id is an integer with the value 728:
> 
> 21 Aug 2007 13:01:49,353 - INFO $Portfolio_89 - Setting the 
> portfolio with the id: 728
> 21 Aug 2007 13:01:50,479 - ERROR $Error_118 - Unable to parse 
> OGNL expression 'id': Unable to parse OGNL expression 'id': 
> Unable to parse OGNL expression 'id': ............
> Exception [classpath:/org/apache/tapestry/form/TextArea.jwc, 
> line 49, column 67]
>       at 
> org.apache.tapestry.binding.ExpressionBinding.resolveExpressio
> n(ExpressionBinding.java:145)
>       at 
> org.apache.tapestry.binding.ExpressionBinding.getObject(Expres
> sionBinding.java:125)
> 
> And then take a look at this:
> 
> 21 Aug 2007 07:56:50,613 - ERROR 
> org.apache.tapestry.services.impl.HiveMindExpressionCompiler 
> - Error generating OGNL getter for expression exceptions with 
> root [EMAIL PROTECTED]:Exception] and body:
> { return (($Exception_119)$2).getExceptions();}
> org.apache.hivemind.ApplicationRuntimeException: Unable to 
> add method java.lang.Object get(ognl.OgnlContext, 
> java.lang.Object) to class $ASTProperty_1146a471a52: [source 
> error] no such class: $Exception_119
> 
> This happening after 3-4 days of normal operation? Suddenly 
> exceptions occur on random objects because OGNL can no longer 
> compile them and this is because Tapestry can no longer find 
> instances of these classes, it relates to JavaAssist dynamic 
> class loading. Also, currently  the server is idle with no 
> connections and JConsole shows 18000 classes loaded, 
> yesterday there were 7000 classes, this number never goes 
> down only up, so you tell me what's going on?
> 
> If Jessie can't explain it, then I have to go back a version 
> we cant afford for clients to see broken pages, my boss 
> doesn't care about the problem, he just wants a solution and 
> its my job and reputation is at stake.
> 
> 
> Andreas Andreou wrote:
> > Peter,
> > though not officially final (I believe), http://news247.gr 
> (tap-4.1.2) 
> > has been getting 400000 req/day for an uptime of 26 days 
> with memory 
> > set to no more than 128MB.
> >
> >
> > On 8/28/07, Peter Stavrinides <[EMAIL PROTECTED]> wrote:
> >   
> >> Hi Jessie
> >>
> >> Any progress on this? .... sorry to bug you, but I have to take a 
> >> decision soon, I have two production machines that will need to 
> >> upgrade or downgrade Tapestry.
> >>
> >> Best wishes,
> >> Peter
> >>
> >> Jon Oakes wrote:
> >>     
> >>> Hi Bryan,
> >>>
> >>> I am a relative newbie but I was wondering if  you are 
> running with 
> >>> caching enabled or disabled?  It might make sense to keep things 
> >>> around when caching is disabled whereas I think it would 
> clearly be 
> >>> a bug to keep things around with it disabled.
> >>>
> >>> Jon Oakes
> >>>
> >>>
> >>> Jesse Kuhnert wrote:
> >>>       
> >>>> Hmmm...well,  I don't think I like the sound of any of 
> that.  I'm just
> >>>> going to pretend this problem doesn't exist.   (just kidding)
> >>>>
> >>>> I had thought I was doing something special with the ognl 
> >>>> compilations that would cause its generated classes to not hang 
> >>>> around afterwards in any pools.
> >>>>
> >>>> I'll take a look at things this weekend and am sure a fix will 
> >>>> appear in between now and Monday - if there is a 
> reasonable fix to be found.
> >>>> (in 4.1.3 snapshot form)
> >>>>
> >>>> On 8/24/07, Bryan Dotzour <[EMAIL PROTECTED]> <mailto:
> >>>>         
> >> [EMAIL PROTECTED]> wrote:
> >>     
> >>>>> I and another colleague of mine have been investigating 
> what seems 
> >>>>> to
> >>>>>           
> >> be
> >>     
> >>>>> a "memory leak" in our Tapestry application for about a month 
> >>>>> since we upgraded to T4.1.2.  I won't bore you with the saga of 
> >>>>> the last month, but I would like to present the data 
> I've gathered 
> >>>>> and look to the
> >>>>>           
> >> list
> >>     
> >>>>> for a proposed solution.  I was reading a recent thread 
> in which 
> >>>>> Jesse said (08/09/2007):
> >>>>>
> >>>>>
> >>>>>
> >>>>> "There is a map that grows as large as the system using it 
> >>>>> internally
> >>>>>           
> >> to
> >>     
> >>>>> javassist of various cached reflection info - but it 
> doesn't leak 
> >>>>> in
> >>>>>           
> >> any
> >>     
> >>>>> way."
> >>>>>
> >>>>> This is precisely what I've found in profiling our 
> application and 
> >>>>> it
> >>>>> *appears* to be this map that is causing our applications to
> >>>>>           
> >> eventually
> >>     
> >>>>> run out of memory.
> >>>>>
> >>>>> The YourKit profiler shows me that, as time goes on, 
> there is an 
> >>>>> instance of HiveMindClassPool  that grows and grows as class 
> >>>>> instances are created.  This class extends from 
> >>>>> javassist.ClassPool and is the
> >>>>>           
> >> map
> >>     
> >>>>> that Jesse is talking about in his quote above.  And 
> he's right, I 
> >>>>> wouldn't say that the class pool "leaks" either because 
> it looks 
> >>>>> like it's designed to retain that memory until the class pool 
> >>>>> itself is no longer needed.
> >>>>>
> >>>>>
> >>>>>
> >>>>> Take this quote from the javassist.ClassPool javadocs:
> >>>>>
> >>>>> "Memory consumption memo:
> >>>>> ClassPool objects hold all the CtClasses that have been 
> created so
> >>>>>           
> >> that
> >>     
> >>>>> the consistency among modified classes can be 
> guaranteed. Thus if 
> >>>>> a large number of CtClasses are processed, the ClassPool will 
> >>>>> consume a huge amount of memory. To avoid this, a 
> ClassPool object 
> >>>>> should be recreated, for example, every hundred classes 
> processed. 
> >>>>> Note that
> >>>>> getDefault() is a singleton factory. Otherwise, detach() in 
> >>>>> CtClass should be used to avoid huge memory consumption. "
> >>>>>
> >>>>> This huge memory consumption by the ClassPool is what I was 
> >>>>> seeing. In particular it is the ClassPool that is held 
> onto by OgnlRuntime.
> >>>>> Inspecting this object in the profiler showed that it has a map 
> >>>>> containing about 45,000 classes.  All of the keys into this map 
> >>>>> were things like:  "ASTTest_11494aca9af" and 
> "ASTAnd_11494ace4fb" 
> >>>>> and the values are instances of javassist.CtNewClass.  
> Each entry 
> >>>>> in this map looks like it retains about 1,900 bytes, 
> for a grand 
> >>>>> total of about 90 MB of memory used.
> >>>>>
> >>>>> These numbers came from my staging deployment where I had the 
> >>>>> profiler attached, using some reflection tricks I was 
> able to look 
> >>>>> at a production site and found that it had about 
> 240,000 items in 
> >>>>> that
> >>>>>           
> >> class
> >>     
> >>>>> pool.. approximately 450 MB of memory.
> >>>>>
> >>>>> So I guess the questions in my mind are:  Why are there so many
> >>>>>           
> >> classes
> >>     
> >>>>> in the pool?  Why does the number only ever go up?  Do those 
> >>>>> classes really need to stay in the pool forever?
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>>           
> >>> 
> --------------------------------------------------------------------
> >>> - To unsubscribe, e-mail: 
> [EMAIL PROTECTED] For 
> >>> additional commands, e-mail: [EMAIL PROTECTED]
> >>>       
> >> 
> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>     
> >
> >
> >   
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to