ControllerFactory also has a Release, which is the right place to
invoke container.Release


On Wed, Mar 4, 2009 at 12:24 PM, Ayende Rahien <[email protected]> wrote:
> Controller has Dispose
> A lot of stuff has dispose that shouldn't have.
> We shouldn't have a problem like that by default.
>
> On Wed, Mar 4, 2009 at 12:21 PM, Craig Neuwirt <[email protected]> wrote:
>>
>> If you forget to close an Open File in your app, its remain locked, but
>> you usually discover that during testing and fix it.  If you don't need any
>> releasing, don't implement IDisposable and it won't be tracked
>>
>> On Wed, Mar 4, 2009 at 2:16 PM, Ayende Rahien <[email protected]> wrote:
>>>
>>> The problem is that people don't call release.
>>> Then they have a memory leak because of this behavior.
>>> - Show quoted text -
>>>
>>> On Wed, Mar 4, 2009 at 12:07 PM, hammett <[email protected]> wrote:
>>>>
>>>> As much as any disposable type expects to be disposed. As Craig
>>>> pointed out, this should happen on the bootstraping code, not
>>>> throughout the application. I dont see the problem. But I can be
>>>> convinced otherwise.
>>>>
>>>>
>>>> Cheers,
>>>> hammett
>>>> http://hammett.castleproject.org/
>>>> Sent from: Vancouver British Columbia Canada.
>>>>
>>>>
>>>> On Wed, Mar 4, 2009 at 12:00 PM, Ayende Rahien <[email protected]>
>>>> wrote:
>>>> > _having_ to release means that we are putting the onus on the
>>>> > developer to
>>>> > do the right thing.
>>>> > I think that this is a mistake to do so by default. Especially since
>>>> > we
>>>> > generally don't need this in .Net
>>>> > If we do need it, we can activate the feature, and
>>>> > assume responsibility for
>>>> > its operation.
>>>> >
>>>> > On Wed, Mar 4, 2009 at 11:47 AM, Craig Neuwirt <[email protected]>
>>>> > wrote:
>>>> >>
>>>> >> yes, but generally just the root object and the component burden does
>>>> >> the
>>>> >> rest which is very important service
>>>> >>
>>>> >> On Wed, Mar 4, 2009 at 1:36 PM, Ayende Rahien <[email protected]>
>>>> >> wrote:
>>>> >>>
>>>> >>> The problem is that this means that you have to release.
>>>> >>>
>>>> >>> On Wed, Mar 4, 2009 at 11:18 AM, Craig Neuwirt <[email protected]>
>>>> >>> wrote:
>>>> >>>>
>>>> >>>> Dispose is just one type of decomission.  There are other that get
>>>> >>>> added
>>>> >>>> dynamically by facilities which need to be applied
>>>> >>>> when components are
>>>> >>>> released.  I think this behavior is important by default
>>>> >>>>
>>>> >>>> On Wed, Mar 4, 2009 at 12:51 PM, Ayende Rahien <[email protected]>
>>>> >>>> wrote:
>>>> >>>>>
>>>> >>>>> It seems that a lot of people are surprised by this behavior, I
>>>> >>>>> think
>>>> >>>>> it would be wiser to no track components by default.
>>>> >>>>> Thoughts?
>>>> >>>>>
>>>> >>>>> On Wed, Mar 4, 2009 at 8:54 AM, kurtharriger
>>>> >>>>> <[email protected]>
>>>> >>>>> wrote:
>>>> >>>>>>
>>>> >>>>>> I don't understand why this isn't the default setting either.
>>>> >>>>>>  IMHO,
>>>> >>>>>> Transient objects should not be tracked by default.
>>>> >>>>>>
>>>> >>>>>> As many several have noticed the issues arising tracking
>>>> >>>>>> transient
>>>> >>>>>> objects for dispose is greater then the risk of not calling
>>>> >>>>>> dispose at
>>>> >>>>>> all (and unless the object holds unmanaged resources, dispose is
>>>> >>>>>> not
>>>> >>>>>> all that necessary anyway).  A disposable component that *must be
>>>> >>>>>> disposed* should also implement a finalizer and that doesn't
>>>> >>>>>> change by
>>>> >>>>>> using a container since there is no guarantee dispose will be
>>>> >>>>>> called
>>>> >>>>>> on container either. Since release accepts the object to dispose
>>>> >>>>>> as a
>>>> >>>>>> parameter there isn't any reason to track it, if object is not
>>>> >>>>>> tracked
>>>> >>>>>> then assume it is transient and call dispose if implemented.
>>>> >>>>>>
>>>> >>>>>> - Kurt
>>>> >>>>>>
>>>> >>>>>>
>>>> >>>>>> On Mar 3, 4:57 pm, Andrew Smith <[email protected]> wrote:
>>>> >>>>>> > Yea, I was worried about negative effects of this also. You
>>>> >>>>>> > don't
>>>> >>>>>> > get
>>>> >>>>>> > something for nothing, right? The only mention I've seen so far
>>>> >>>>>> > is a
>>>> >>>>>> > comment
>>>> >>>>>> > from hammett in the another post to this group ("ViewComponent
>>>> >>>>>> > memory
>>>> >>>>>> > leak"):
>>>> >>>>>> >
>>>> >>>>>> > "The side effects is that you might have disposable components
>>>> >>>>>> > that
>>>> >>>>>> > are
>>>> >>>>>> > not being disposed by the container"
>>>> >>>>>> >
>>>> >>>>>> > In my case I know I don't have any disposable components
>>>> >>>>>> > involved,
>>>> >>>>>> > so after
>>>> >>>>>> > some proper testing, I'll be applying the 'fix' to my server
>>>> >>>>>> >
>>>> >>>>>> > On Tue, Mar 3, 2009 at 11:45 PM, Stefan Sedich
>>>> >>>>>> > <[email protected]>wrote:
>>>> >>>>>> >
>>>> >>>>>> >
>>>> >>>>>> >
>>>> >>>>>> > > Excellent glad I could help. But I would look into releasing
>>>> >>>>>> > > your
>>>> >>>>>> > > objects properly, not sure maybe someone can comment on
>>>> >>>>>> > > negative
>>>> >>>>>> > > impacts of using NoTrack policy.
>>>> >>>>>> >
>>>> >>>>>> > > Cheers
>>>> >>>>>> >
>>>> >>>>>> > > On Wed, Mar 4, 2009 at 9:43 AM, Andrew Smith
>>>> >>>>>> > > <[email protected]>
>>>> >>>>>> > > wrote:
>>>> >>>>>> > > > just changed the policy and re-ran a local stress test.
>>>> >>>>>> > > > Immediate
>>>> >>>>>> > > > improvement. Previous test ended with memory usage of
>>>> >>>>>> > > > ~200MB,
>>>> >>>>>> > > > this time
>>>> >>>>>> > > > round 70MB
>>>> >>>>>> > > > thanks again!
>>>> >>>>>> >
>>>> >>>>>> > > > On Tue, Mar 3, 2009 at 11:37 PM, Stefan Sedich
>>>> >>>>>> > > > <[email protected]>
>>>> >>>>>> > > > wrote:
>>>> >>>>>> >
>>>> >>>>>> > > >> No problems,
>>>> >>>>>> >
>>>> >>>>>> > > >> Something that caught me too, I knew a few people that
>>>> >>>>>> > > >> were not
>>>> >>>>>> > > >> aware
>>>> >>>>>> > > >> and they had never stress tested their apps or realised it
>>>> >>>>>> > > >> was
>>>> >>>>>> > > >> resetting (dangerous). I am glad I profile my stuff before
>>>> >>>>>> > > >> putting it
>>>> >>>>>> > > >> anywhere near production. I guess releasing is the way
>>>> >>>>>> > > >> proper
>>>> >>>>>> > > >> way to
>>>> >>>>>> > > >> handle things, but I have been naughty and just used
>>>> >>>>>> > > >> NoTracking.
>>>> >>>>>> >
>>>> >>>>>> > > >> Cheers
>>>> >>>>>> >
>>>> >>>>>> > > >> On Wed, Mar 4, 2009 at 9:33 AM, Andrew Smith
>>>> >>>>>> > > >> <[email protected]>
>>>> >>>>>> > > >> wrote:
>>>> >>>>>> > > >> > Hi Stefan,
>>>> >>>>>> > > >> >  you know as soon as I posted that, of course I came
>>>> >>>>>> > > >> > across
>>>> >>>>>> > > >> > details on
>>>> >>>>>> > > >> > this
>>>> >>>>>> > > >> > issue. In fact your very blog post. In all the time I've
>>>> >>>>>> > > >> > used
>>>> >>>>>> > > >> > castle,
>>>> >>>>>> > > I
>>>> >>>>>> > > >> > never realised I was expected to explicitly release a
>>>> >>>>>> > > >> > transient
>>>> >>>>>> > > >> > component.
>>>> >>>>>> > > >> > By the sounds of it, I'm sure that will be the cause as
>>>> >>>>>> > > >> > I'm
>>>> >>>>>> > > >> > using
>>>> >>>>>> > > >> > windsor
>>>> >>>>>> > > >> > integration heavily and can easily repro the issue with
>>>> >>>>>> > > >> > a
>>>> >>>>>> > > >> > local stress
>>>> >>>>>> > > >> > test.
>>>> >>>>>> > > >> >  Thanks for the info
>>>> >>>>>> > > >> > Cheers,
>>>> >>>>>> > > >> > Andrew
>>>> >>>>>> >
>>>> >>>>>> > > >> > On Tue, Mar 3, 2009 at 11:24 PM, Stefan Sedich <
>>>> >>>>>> > > [email protected]>
>>>> >>>>>> > > >> > wrote:
>>>> >>>>>> >
>>>> >>>>>> > > >> >> Andrew,
>>>> >>>>>> >
>>>> >>>>>> > > >> >> I have built a few simmilar sounding shop fronts, with
>>>> >>>>>> > > >> >> medium load
>>>> >>>>>> > > and
>>>> >>>>>> > > >> >> have not had issues with memory leaks with the app
>>>> >>>>>> > > >> >> pools
>>>> >>>>>> > > >> >> running
>>>> >>>>>> > > solid
>>>> >>>>>> > > >> >> until their nightly reset.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> If you hit your site with a web stress testing tool do
>>>> >>>>>> > > >> >> you
>>>> >>>>>> > > >> >> see the
>>>> >>>>>> > > >> >> memory continue to climb until app pool reset? If this
>>>> >>>>>> > > >> >> is
>>>> >>>>>> > > >> >> the case it
>>>> >>>>>> > > >> >> is possible you have a memory leak.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> I would suggest getting a tool like ANTS profiler to
>>>> >>>>>> > > >> >> see if
>>>> >>>>>> > > >> >> you can
>>>> >>>>>> > > >> >> track down any memory leaks in your application and
>>>> >>>>>> > > >> >> then go
>>>> >>>>>> > > >> >> from
>>>> >>>>>> > > >> >> there. I would say from what I have seen in my apps
>>>> >>>>>> > > >> >> ~200MB
>>>> >>>>>> > > >> >> seems
>>>> >>>>>> > > >> >> reasonable depending on what it is doing.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> In my last project I had similar issues you describe.
>>>> >>>>>> > > >> >> In my
>>>> >>>>>> > > >> >> case I
>>>> >>>>>> > > was
>>>> >>>>>> > > >> >> using Windsor and not releasing my components from the
>>>> >>>>>> > > >> >> container when
>>>> >>>>>> > > >> >> I was done with them. In my case I decided to not
>>>> >>>>>> > > >> >> release my
>>>> >>>>>> > > >> >> objects
>>>> >>>>>> > > >> >> and use the NoTrackingReleasePolicy instead, as this
>>>> >>>>>> > > >> >> was
>>>> >>>>>> > > >> >> fine for my
>>>> >>>>>> > > >> >> needs and removed the leak that I had.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> I have blogged about this here:
>>>> >>>>>> >
>>>> >>>>>> >
>>>> >>>>>> > >
>>>> >>>>>> > > > >http://weblogs.asp.net/stefansedich/archive/2008/11/05/avoid-memory-l...
>>>> >>>>>> >
>>>> >>>>>> > > >> >> Cheers
>>>> >>>>>> > > >> >> Stefan
>>>> >>>>>> >
>>>> >>>>>> > > >> >> On Wed, Mar 4, 2009 at 9:04 AM, Andrew
>>>> >>>>>> > > >> >> <[email protected]>
>>>> >>>>>> > > >> >> wrote:
>>>> >>>>>> >
>>>> >>>>>> > > >> >> > I've just launched an e-commerce website based on
>>>> >>>>>> > > >> >> > Monorail
>>>> >>>>>> > > >> >> > and
>>>> >>>>>> > > using
>>>> >>>>>> > > >> >> > ActiveRecord. It's a replacement of a previous PHP
>>>> >>>>>> > > >> >> > solution and we
>>>> >>>>>> > > >> >> > have on average about 20 - 30 concurrent users at any
>>>> >>>>>> > > >> >> > given time.
>>>> >>>>>> > > I'm
>>>> >>>>>> > > >> >> > also running an admin site in the same application
>>>> >>>>>> > > >> >> > pool.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> >  My issue is to do with memory usage. I'm running on
>>>> >>>>>> > > >> >> > a 1GB
>>>> >>>>>> > > >> >> > VPS box
>>>> >>>>>> > > >> >> > (also hosting a SQL Server DB on same machine). I've
>>>> >>>>>> > > >> >> > limited SQL
>>>> >>>>>> > > >> >> > Server to 200MB and my IIS6 worker process to 400MB.
>>>> >>>>>> > > >> >> > However, even
>>>> >>>>>> > > >> >> > pre-
>>>> >>>>>> > > >> >> > release when testing with 1 or 2 users the memory
>>>> >>>>>> > > >> >> > usage
>>>> >>>>>> > > >> >> > would
>>>> >>>>>> > > easily
>>>> >>>>>> > > >> >> > sit around the 300MB mark. Now with the real load,
>>>> >>>>>> > > >> >> > I'm
>>>> >>>>>> > > >> >> > seeing the
>>>> >>>>>> > > >> >> > application pool recycle approx every 40 mins
>>>> >>>>>> > > >> >> > (normally
>>>> >>>>>> > > >> >> > should only
>>>> >>>>>> > > >> >> > recycle at 3am). I'm using the ASP.Net state service
>>>> >>>>>> > > >> >> > so
>>>> >>>>>> > > >> >> > session
>>>> >>>>>> > > >> >> > details are preserved but still, I'm concerned
>>>> >>>>>> >
>>>> >>>>>> > > >> >> >  As I said, it's an e-commerce site so there's the
>>>> >>>>>> > > >> >> > usual
>>>> >>>>>> > > >> >> > shop
>>>> >>>>>> > > stuff:
>>>> >>>>>> > > >> >> > lots of nice pics, searches, checkout and a bit of
>>>> >>>>>> > > >> >> > 2nd
>>>> >>>>>> > > >> >> > level
>>>> >>>>>> > > caching
>>>> >>>>>> > > >> >> > for things such as categories (max 200 categories),
>>>> >>>>>> > > >> >> > countries,
>>>> >>>>>> > > rates
>>>> >>>>>> > > >> >> > etc. Really not that much is cached and mem usage was
>>>> >>>>>> > > >> >> > high
>>>> >>>>>> > > >> >> > before
>>>> >>>>>> > > we
>>>> >>>>>> > > >> >> > fully optimised the site. I've been careful to have
>>>> >>>>>> > > >> >> > the
>>>> >>>>>> > > >> >> > SQL
>>>> >>>>>> > > profiler
>>>> >>>>>> > > >> >> > beside me as we were testing the app, so I'm
>>>> >>>>>> > > >> >> > confident
>>>> >>>>>> > > >> >> > that I don't
>>>> >>>>>> > > >> >> > have N+1s all over the place. Oh, and I'm using
>>>> >>>>>> > > >> >> > standard
>>>> >>>>>> > > session-per-
>>>> >>>>>> > > >> >> > request model using Ayende's UOW stuff
>>>> >>>>>> >
>>>> >>>>>> > > >> >> >  I guess what I'm asking is: Is that level of memory
>>>> >>>>>> > > >> >> > usage
>>>> >>>>>> > > >> >> > expected
>>>> >>>>>> > > >> >> > for that type of site? I would love to hear back from
>>>> >>>>>> > > >> >> > anyone who
>>>> >>>>>> > > has
>>>> >>>>>> > > >> >> > launched a similar type of site.
>>>> >>>>>> >
>>>> >>>>>> > > >> >> >  I did see a previous post about this, but they are
>>>> >>>>>> > > >> >> > talking around
>>>> >>>>>> > > >> >> > the
>>>> >>>>>> > > >> >> > 200MB mark, so I'm wondering what on earth I'm doing
>>>> >>>>>> > > >> >> > wrong!
>>>> >>>>>> >
>>>> >>>>>> > > >> >> > There is the option of shelling out more cash and go
>>>> >>>>>> > > >> >> > to a
>>>> >>>>>> > > >> >> > 2GB VPS
>>>> >>>>>> > > >> >> > box,
>>>> >>>>>> > > >> >> > but I'd rather not have to....
>>>> >>>>>> >
>>>> >>>>>> > > >> >> > cheers
>>>> >>>>>> >
>>>> >>>>>> > > >> >> --
>>>> >>>>>> > > >> >> Stefan Sedich
>>>> >>>>>> > > >> >> Software Developer
>>>> >>>>>> > > >> >>http://weblogs.asp.net/stefansedich
>>>> >>>>>> >
>>>> >>>>>> > > >> --
>>>> >>>>>> > > >> Stefan Sedich
>>>> >>>>>> > > >> Software Developer
>>>> >>>>>> > > >>http://weblogs.asp.net/stefansedich
>>>> >>>>>> >
>>>> >>>>>> > > --
>>>> >>>>>> > > Stefan Sedich
>>>> >>>>>> > > Software Developer
>>>> >>>>>> > >http://weblogs.asp.net/stefansedich
>>>> >>>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>>
>>>> >>>>
>>>> >>>>
>>>> >>>>
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>
>>>> >>
>>>> >>
>>>> >
>>>> >
>>>> > >
>>>> >
>>>>
>>>>
>>>
>>> - Show quoted text -
>>>
>>
>>
>>
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Development List" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/castle-project-devel?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to