Minimum memory requirements for Nopcommerce

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
9 years ago
Ok, thanks!

But, of all changesets I have applied, which one broke the 3.3 views compatibility??

I dont want revert all changesets, so I need to find it.

Thanks!
9 years ago
Well, just for the record:

global.asax.cs, removing the following code:


//register virtual path provider for embedded views
            var embeddedViewResolver = EngineContext.Current.Resolve<IEmbeddedViewResolver>();
            var embeddedProvider = new EmbeddedViewVirtualPathProvider(embeddedViewResolver.GetEmbeddedViews());
            HostingEnvironment.RegisterVirtualPathProvider(embeddedProvider);


of course, breaks the 3.3 plugins compatibility, because nop doesnt get embedded views from plugins dlls.

So, keep it in mind when applying performance upgrades or fixes.

Thanks!
9 years ago
ivanslater wrote:
Well, just for the record:

global.asax.cs, removing the following code:


//register virtual path provider for embedded views
            var embeddedViewResolver = EngineContext.Current.Resolve<IEmbeddedViewResolver>();
            var embeddedProvider = new EmbeddedViewVirtualPathProvider(embeddedViewResolver.GetEmbeddedViews());
            HostingEnvironment.RegisterVirtualPathProvider(embeddedProvider);


of course, breaks the 3.3 plugins compatibility, because nop doesnt get embedded views from plugins dlls.

So, keep it in mind when applying performance upgrades or fixes.

Thanks!


These lines are no longer exist in 3.40 since views of the plugins can not be embedded any more.
9 years ago
shahdat45ict wrote:


These lines are no longer exist in 3.40 since views of the plugins can not be embedded any more.


Im talking about 3.3 upgrades, so these lines still exists in that version.

Thanks!
9 years ago
Very useful thread. I have been following it in detail ever since I have hit performance issues on one of my sites (www.estoreuk.com). All of a sudden the memory usage seemed to increase and within my hosting provider, the app pool by default is shared which switches to a dedicated app pool automatically when servers detect high usage. The problem is that the dedicated app pool by default has only 128MB of memory. Because of this I have to ask my hosting provider to increase the app pool memory. The error reported regularly is the following;

"A worker process with process id of '8516' serving application pool 'estoreuk.com v4.0 (Integrated)' has requested a recycle because it reached its private bytes memory limit."

I have just upgraded the website to v3.40 hoping that the website performs better and remains within the shared app pool where I am assuming it has more memory and where it has been running for nearly 1 year without performance issues and at pretty good speeds. I am suspecting the hosting provider may have got more sites added recently which has started to push my site as high memory consumer.

There's definitely an improvement in performance with 3.40 and I have implemented the recommendations on this thread (i.e. Andrei's suggestion of disabling settings 1-5 in Catalog settings). I have also enabled client-cache (http://www.iis.net/configreference/system.webserver/staticcontent/clientcache).

When running tests on http://tools.pingdom.com (http://tools.pingdom.com/fpt/#!/dWbKvV/estoreuk.com), they are coming back, in some case really bad like from 5s up to 20s. Also, Google Insights is rating the performance quite low (https://developers.google.com/speed/pagespeed/insights/?url=http%3A%2F%2Fwww.estoreuk.com%2F).

Are there any other settings I can change within Nop admin that will improve performance further? I know image caching & compressing can gain lots for performance, but what is the best way to do this in Nop 3.40? Note, images currently are in database, I do plan to switch to filesystem, which I believe will increase performance, unless someone can tell me otherwise?

Thanks in advance.
9 years ago
yes this is what i want to know too, that switching images from database to disk storage could improve loading speed. The problem is that using database storage is a lot more flexible when you need to generate images on the fly, with whatever size you like.

120 mb for dedicated app pool is too small for nop to run, it will be recycled when reaching the limit.

If you happen to get IIS 8+ to host your sites, i guess it will use less memory and the performance should be better

http://blogs.iis.net/rickbarber/archive/2012/09/19/iis8-memory-improvements.aspx

if your sites take 5-10s to load then it should be hosting hardware has reached the limit, not enough RAM or overloaded CPU, so it puts the burden on harddisk virtual memory.

So instead of using more caching, i guess you should take off some caching to lower the memory usage.


One more thing, try to enable 32 bit application on the app pool that manage your site, it seems to use a lot less memory. So unless your site needs more than 32 bit ram can handle (e.g more than 4 gb ram i guess), then use 32bit app pool.

A test on clean default Nop 3.4 (IIS 7.5):

on First run:

64 bit pool    32 bit pool
394 kb            150-180 kb

after browsing all main categories on menu:

64 bit pool    32 bit pool
400kb-450kb            190 kb (very good)

The funny thing is that Nop using Entity framework on 32 bit pool uses the same RAm with Nop + Dapper. However Nop +Dapper on 64 bit run a lot less than Nop on 32 bit pool (same data), which only uses 120kb.

nop + Dapper is too fast, the first run(app pool killed) could be 3 times faster than nop + EF 6.1.1
9 years ago
Thanks for reply.

My hosting provider has kindly increased the RAM to 500MB temporarily while I investigate and try to tweak settings for performance and figure out the level of memory usage required. But I think I may have to go with 500MB. Even then I am still getting "Application has started" in the logs every 5-10 mins. I am not sure if they will let me play around with 32/64bit pool settings as its shared hosting.

Problem is that the only option right now seems to be to upgrade my hosting package to premium one which obviously isn't cheap.

I have around 600-700 products on the site. I am thinking, is it worth optimizing the database i.e. indexes etc... Could this have impact on web server memory usage?

Thanks
9 years ago
Similar memory usage on 32 vs 64 bit app pool

http://www.sitefinity.com/developer-network/forums/bugs-issues-/app-pool-memory-drastically-different-from-32-64-bit

http://stackoverflow.com/questions/13197455/memory-usage-between-32-bit-pool-and-64-bit-pool

not sure about compiling it as 32/64 bit has a different outcome.
9 years ago
congthanhgiong wrote:
Similar memory usage on 32 vs 64 bit app pool

http://www.sitefinity.com/developer-network/forums/bugs-issues-/app-pool-memory-drastically-different-from-32-64-bit

http://stackoverflow.com/questions/13197455/memory-usage-between-32-bit-pool-and-64-bit-pool

not sure about compiling it as 32/64 bit has a different outcome.


OK, I have had my hosting provider test it with 32 bit app pool, and we have some good news. It seems to make a big difference. Prior to this the app pool was set to 512MB and kept recycling under load tests.

Below are the results from their tests.

During our load test the RAM usage was almost constant at these limits: 205-273Mb
The RAM levels remained at almost the same numbers: 191-255Mb
The application pool didn't recycle during this test, and also the Proc time usage is 2-3%.

I have also run load testing myself with 50 concurrent users for about 10 minutes, and website is running quickly with no app restart issues.

Question for the nop team. Will switching to 32bit app pool cause any other issues?

Thanks
9 years ago
Sounds good.

My pool is using more than 1GB. But the site loading time is bellow 2sec (full load).

Will the change to 32 bits make the loading time bigger? Or make it faster?

Thanks!
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.