I'm not sure misuse is a good argument to change this behavior.
On Wed, Mar 4, 2009 at 12: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. > > 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 >> >>>>>> >> >>>>> >> >>>>> >> >>>>> >> >>>> >> >>>> >> >>>> >> >>> >> >>> >> >>> >> >> >> >> >> >> >> > >> > >> > > >> > >> >> > > > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
