Performance testing nopCommerce 3.70 on Azure using Redis + Blob + Azure SQL

4 years ago
I want to test nopCommerce 3.70 performance on Azure.

I created an environment with the following components:

1. WebApp with 10 instances (constant not auto scaled) each with 4 cores and 7 GB ram - "S3 Standard"
2. Using Blob for images
3. Redis with 1 GB of cache - "C1 Standard"
4. SQL Azure - "S3 Standard"

Before starting to test i checked that everything is connected correctly (Blob, Redis, SQL).

The database has the sample data that comes with nopCommerce, nothing else.

We ran 250 clients for 1 minute using internal Azure performance test and loader.io.

In both cases the avg. server response time per request was around 14 sec.

When I removed Redis the results were better around 12 sec but even this one is not enough.


I thought that Redis and Azure SQL will make the system much faster, am I missing something?



My final gole is an environment that can support 5000 concurrent users.

Any help or ideas would be appreciated.
4 years ago
This looks like a very low performance! what type of requests where the clients doing? Have you been able to verify if the load was evenly distributed across the 10 instances? Where there errors or something suspicious in the log?

There are some recommendations to improve performance. Have you applied them? You can preload all resources, disable ACL and multistore checks, etc.
4 years ago
We've made several good performance improvements in the upcoming version 3.80 (download). Could you please test it out in your environment and share your results?
4 years ago
a.m. wrote:
We've made several good performance improvements in the upcoming version 3.80 (download). Could you please test it out in your environment and share your results?

Andrei, does it include using async/await all the way? I wouldn't be surprised if this gave 10x or 20x increase in the number of concurrent requests nop can handle.
4 years ago
I will preform another test but this time i will us actual VMs instead of AppServices used before. I will allow me to diagnose each VMs resources and see if requests are arriving correclty.

Andrei, is upcoming 3.80 stable enough for production?
4 years ago
fcastells wrote:
Andrei, does it include using async/await all the way?

No. There's a separate work item
4 years ago
ArielDeil wrote:
Andrei, is upcoming 3.80 stable enough for production?

No. It's not recommended to use it in production environment now
4 years ago
Hi ArielDeil,

We will be happy to contribute to the tests. Pls share more details so we can check. PM your skype details, may be we can talk on the same and then share results / findings here.

Regards,
Krunal
4 years ago
Hi Krunal,

Thanks a lot. PM'ed

P.S. But actually you can simply download the latest development version on github and test it out
4 years ago
I just wanted to update.

We are doing alot of investigations. Right now nopCommerce 3.80 is faster than 3.70 in about 500ms per request (we are testing category page which is the most problematic one). This is in case we use SQL installed locally on the same machine as IIS and using local memory cache.

Once we move SQL to different machine, SQL Azure, performance decreases and we get a lot of timeout in our testing environment which means that the response time is more than 10sec.

So we figured that there is heavy network traffic between nopCommerce and SQL server which starts to impact performance when moving SQL Server out of the VM.

We are tring to do some changes in the code. We suspect that the Picture entity is consuming a lot of traffic due to the Binary data that is stored as a property inside the entity and travels with it each time a Picture is requested eventhough the Binary data is not always needed.

We are doing some tests to see if removing the binary data from Picture entity can boost performance.

I will keep you updated..