One Critical NopCommerce Issue

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
14 anos atrás
First of all, the guys in NopCommerce have done a great job. The product has the features I was looking for (multiple language, multiple currency, and rich feature product catalog) and sounds a flexible framework.

The critical features which are still missing are sale order management and multiple language product catalog. I know they have been mentioned in this board widely.

The most critical issue is the performance. The application is shut down and reloaded in very short period of time, which would be 1 minute, 10 munites, or a little longer dependent on traffic load, and the ASP.net caching becomes almost useless, while this is so important that without caching, you almost have no place to go for performance.

my site has no the shutdown and reload issue at all before adding in NOP, and I use a lot of data cache and page cache. It also had much less DLLs before.

Tracing the asp.net application domain shutdown issue is  difficult. The following are my findings so far:

1. Only the ADO.Net functionality is used from the Enterprise library as I see so far, and I would suggest to only copy the few ADO.NET wrapping files instead of including all the DLLs. I know someone would argue ....

2. TaskManager would be in question. As weknows, one app domain may load multiple Global.Asax from multiple threads in a  worker thread pool, and TaskManager will Initialize and Start more than once. Initialize does not release previous  timer before clear the collection. So calling Stop is needed. Second, one Task, e.g., SendEmail may execute by more than one thread.
3. To test whether GetAllSettings may call out to database by multiple threads, an intentional infinite loop is set inside GetAllSettings to collect threads, and I used the heartbeat event from healthmonitor to trigger a extra thread ( I didn't know where this thread come from yet, but I did not want to get a thread from  ASP.net worker thread pool through page request). I saw more than five threads (two worker threads) circling at  GetAllSettings.  This means more than one copy of data may be retreived, but only one is left in the Cache finally, and the wast memory waits for re-collection. LocaleStringResourceManager may hit the similar situation too inside GetAllResourcesByLanguageID.
14 anos atrás
i agree with quanliang

regards,
Adil
14 anos atrás
quanliang wrote:
First of all, the guys in NopCommerce have done a great job. The product has the features I was looking for (multiple language, multiple currency, and rich feature product catalog) and sounds a flexible framework.

The critical features which are still missing are sale order management and multiple language product catalog. I know they have been mentioned in this board widely.

The most critical issue is the performance. The application is shut down and reloaded in very short period of time, which would be 1 minute, 10 munites, or a little longer dependent on traffic load, and the ASP.net caching becomes almost useless, while this is so important that without caching, you almost have no place to go for performance.

my site has no the shutdown and reload issue at all before adding in NOP, and I use a lot of data cache and page cache. It also had much less DLLs before.

Tracing the asp.net application domain shutdown issue is  difficult. The following are my findings so far:

1. Only the ADO.Net functionality is used from the Enterprise library as I see so far, and I would suggest to only copy the few ADO.NET wrapping files instead of including all the DLLs. I know someone would argue ....

2. TaskManager would be in question. As weknows, one app domain may load multiple Global.Asax from multiple threads in a  worker thread pool, and TaskManager will Initialize and Start more than once. Initialize does not release previous  timer before clear the collection. So calling Stop is needed. Second, one Task, e.g., SendEmail may execute by more than one thread.
3. To test whether GetAllSettings may call out to database by multiple threads, an intentional infinite loop is set inside GetAllSettings to collect threads, and I used the heartbeat event from healthmonitor to trigger a extra thread ( I didn't know where this thread come from yet, but I did not want to get a thread from  ASP.net worker thread pool through page request). I saw more than five threads (two worker threads) circling at  GetAllSettings.  This means more than one copy of data may be retreived, but only one is left in the Cache finally, and the wast memory waits for re-collection. LocaleStringResourceManager may hit the similar situation too inside GetAllResourcesByLanguageID.




Please contact me quanliang i have something to talk to you about
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.