We have a catalog catalog with approximatly 100.000 products. When browsing the catalog, we see that the memory usage increases a lot. Without having measured the amount of data per variant, I suppose each variant could contain around 5 kb. How much memory would you expect this catalog to use? I see that there are a lot of cache entries containing verisoning information etc.
What would the typical memory footprint for a site like this be?Best regards
There are a lot of things that can affect your "catalog size", including the number of properties (As well as their content), prices, inventories, and the number of languages.
The memory foot print should also vary a lot, depending on how you load the entries.
If you are having performance issues, including high memory usage, I'd suggest to do some profiling (dotTrace, stackify prefix, ANTS Memory profiler) to see what cause the high memory usage, not the way around. Limiting the memory footprint is not a good way to tackle performance problems - if you have one. Instead, you should give your website as much memory as it needs, as long as that is not wasted.
High memory usage in itself is not a bad thing if it is used for cache. ASPNET trims the cache if it uses too much memory, so the items can be garbage collected. The thresholds for trimming depend on framework version, settings and more, but in many cases it won't start trimming until you've used almost all available memory (again, memory used for caching is generally a good thing).
You can look at the settings, for example privateBytesLimit if you want to set a lower threshold for when the cache starts to be trimmed. Another setting to look at is the applicationSettings/pageCacheSlidingExpiration attribute in the episerver config section. The default for this is 12 hours, but since it is sliding timeout a significantly shorter time could work well and use less memory if you have a lot of infrequently accessed content.
Finally, Commerce 11.1 and later contain an optimizaiton for the cache memory usage when you primarily load content (as opposed to DTOs and MetaObjects).