Hi all, I have been working on improving the performance in the user home page as a result of the above findings.
*Getting all applications of the user from the back end only when users are added to new applications* I have removed getting all applications of the user when the user home page is accessed after a certain period of time. Getting the whole application list of a particular user needs multiple calls to read rxts and particular information like the branch count from the runtime database. Hence this is a very costly operation. Therefore I have introduced a cache in the back end so that whenever a user is added to a newly created application the cache entry is created. So whenever the user home page is loaded first this cache will be searched for that particular user and unless the used exists in the cache application home data will not be loaded from the rxts and the runtime database. *Introducing a ApplicationSummary object* Up until now we had a ApplicationInfoBean object which contained all the data I have created a new ApplicationSummary object which contains only the applicationName, applicationKey and applicationType which are the only attributed that is needed to populate the user home page. By doing this the database calls to retrieve the branch count is removed. These database calls were made while retrieving information for each application. Therefore this would make a considerable improvement when it comes to users with a number of applications. Furthermore I am +1 for removing the application creation status from the database as well since it can be ignored when retrieving user home information. The only use case that I can think of it is that when some one creates an application and if he immediately logs out and logs in. This is very unlikely to happen. Please share your thoughts about this. Regards Gayan On Fri, Mar 13, 2015 at 11:58 AM, Dimuthu Leelarathne <[email protected]> wrote: > Hi all, > > In our efforts to improve performance this is going to be our approach. > > *BE Performance* - We are going to keep profiling and improving the BE > performance. This includes registry and db access. So the idea is to cache > data in session when applicable and cache data at Carbon cache layer when > applicable. > > As a start we have profiled the user home data. I am attaching java > profiler snapshot. And as a result Gayan is working on put app home data > to session and clear it when the user is invited to the app (happen over > the cluster). Likewise we'll keep on profiling and caching appropriately > when it is applicable/appropriate. Even though registry is aching rxts, > accessing it is costly at times. We'll keep updating architecture@ and > dev@ with our efforts. > > *FE Performance* - Next step is to use browser local cache with web > sockets when applicable. Nginx is supporting web sockets. For example we > can cache the Application object in the browser cache whenever app home is > loaded and keep updating certain fields via web sockets. As discussed with > the UI team we'll be writing a generic layer to do that. > > thanks, > dimuthu > > -- > Dimuthu Leelarathne > Architect & Product Lead of App Factory > > WSO2, Inc. (http://wso2.com) > email: [email protected] > Mobile : 0773661935 > > Lean . Enterprise . Middleware > -- Gayan Dhanuska Software Engineer http://wso2.com/ Lean Enterprise Middleware Mobile 071 666 2327 Office Tel : 94 11 214 5345 Fax : 94 11 214 5300 Twitter : https://twitter.com/gayanlggd
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
