> > Hello! > Hello, > > Now I'm trying to launch big web-site consists of about 100.000 dynamic > > web-pages (about 100kb each without images) which has about 50.000 hits per > > day. > > > > I've got some difficulties launching this web-site on FreeBSD with Mono > > 1.2.3: > > > > 1. Uncontrolled grow of used memory. After about hour or two mono process > > grows up to 2-3Gb and goes down (visitors get "Service temporary > > unavailable" > > error). Web-application didn't contain any big object in memory, just > > 100-200 > > entries in Cache object with sliding expiration. Web-pages are simple too: 5 > > aspx pages with several user controls. Is the reason of this situation in > > non-compactiong GC in Mono or in possible programmers errors? > As Miguel advised in another post, could you run your application with > heap-shot and post the results? I've tried to get heap-shot, but didn't understand how to do it exactly. I was trying to add "--profile=heap-shot" to file /usr/bin/mod-mono-server2, also I've tried to set variable $MONO_OPTIONS to --profile=heap-shot. But results are the same: heap-shot-gui didn't "see" mod-mono process and command kill -PROF <pid> just killed the process without dumping memory to file. What do I wrong?
Also I've found that huge grow of memory accurs only with 'trace enabled="true"' option in web.config. After turning it off and swicthing off session state web-application works well enougth for me. But anyway it seems like size of mod-mono process never decreases. Also real size of mod-mono process is bigger than value reported by GC.GetTotalMemory(); > > 2. Behavior of Cache object. Value of Cache.Count variable is in about 2 > > times higher than number of Keys available via Cache.GetEnumerator(). Even > > when I didn't add any object to Cache, Cache.Count indicates 20-30 entries > > which are unavailable via enumerator. > The difference is actually a small bug in the cache implementation. Our cache > contains both public (set by the application) and private (used by, e.g., the > ASP.NET compiler) entries. When you ask for Cache.Count, an internal count of > the hashtable used by the cache to hold the data is returned - this count > includes the private members. When, however, you request the enumerator, only > the public members are returned (the enumerator to a dynamically allocated > ArrayList is returned, not to the underlying hashtable). I will probably > separate the private cache from the public one to get rid of that discrepancy. Thanks for explanation, I'll know. All the best, Max Karavaev _______________________________________________ Mono-list maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-list
