Hi,
We used ASPZero template “ASP.NET MVC 5.x & Angularjs 1.x” to build SPA (single page application) multitenant, multilingual business app having multiple modules. Initially it worked great but with the passage of time it is going slow day by day as we are adding more modules/feature to this app.
Earlier we started this app from 0.8.x version of aspzero, app was somewhat ok. Recently we migrated to aspzero version 5.x. after this we have noticed reasonable degrade in performance and 2 to 3 times more resource hungry.
Following is the glimpse of our app • No of Application Services: 200+ • No of Database Entities: 160+ • No of Features: 200+ • No of Permissions: 550+ • No of Key/Value pairs in localization file (xml): 2950+ • No of Angular js controllers and corresponding csthmls: 600+
As a consequence… • On startup, as dynamic web api is created, js proxies are generated, all permissions and localization data is loaded, all js files are bundled and loaded once, so all this badly decreasing loading time • DB entities are increasing and DB operations are getting slower • So it is not only going slow but also becoming much compute-resource hungry
We want to break app to multiple modules where only specific data and things should be loaded as per required by any module. Please provide your suggestions regarding this how we can optimize app and increase performance to optimum level with reasonable compute resources
App URL: app.speedautosystems.com
Thanks & Regards,
6 Answer(s)
-
0
Hi @liaquathussain
It is hard to make a suggestion for such a case.
First of all, you need to detect the points making your app slower. Then, if there is anything that we can do in AspNet Zero, we can try to make it better (or ABP Framework).
I can suggest you to start with checking your DB performance. There are several good SQL Queries on the web for finding missing Indexes on your DB.
Then, you can check page load times and see which request takes longer time than others.
-
0
DB is already tunned properly, infact it is auto tunned by Azure and indexes are created reqularly, DB response and queries running is fine if excute some query directly.
Question is, why app gone slow after upgrade.
Before upgrade we were using following plan for azure Azure Web App 1 Large Intance Azure DB Standard (S3) 100 DTU Utilization and app response was ok
After upgrade we have to increase resources as app was totally stuck Azure Web App 2 Large instances Azure DB Standard (S4) 200 DTU Even doubling resources, app response is considerable slow than previous one. Earlier we were not having any complaints from our customers now we do have frequent complains
Also breaking abp/aspzero related data loading to module basis is very important as it works following.
"On startup, as dynamic web api is created, js proxies are generated, all permissions and localization data is loaded, all js files are bundled and loaded once,"
Is there any way to
- instead of dynamic web api generation we can have while building solution to avoid runtime time consumption?
- Is there any way to break permissions and localization data to modules and for specific module only that part should be loaded?
- Is there any way to generate js proxies based on group of app services so that only module specific js should be created?
You valuable suggestion will help us to get it fined tunned as our app is growing day by day, features are increasing, tenants are increasing.
Thanks you!
-
0
@liaquathussain could you share the url of your app with [email protected] and let us check it first ?
Thanks.
-
0
Hi @liaquathussain
Awaiting your response.
Thanks
-
0
Hi,
Sorry for late reply, I was away.
Following is access detail.
https://app.speedautosystems.com Company Code (Tenant Code): BelhasaTest Username: admin Password: admin123
-
0
Hi @liaquathussain
I have checked the app superficially. The dashboard is the slowest page I guess and it seems like it is related to the timing of the db query.
Most of other pages seem fine. For the dahsboard, instead of making multiple requet for each dashboard item, you can get the entire dashboard data at once when the page is loaded.