Hi all, In humantask engine we are facing following problems,
- Every task operations requires users/roles validation. If the task has expression based user assignment or excluded owners, this validation becomes expensive since it requires additional user store calls. ( Many of them are redundant calls) - Many operations are sequential operations. (eg. loadTask -> claim -> start , loadTask-> complete). This causes to invoke redundant user store calls. - If the user store has many users/role these calls will take some time to complete and eventually task engine becomes slow. So the main idea is, to avoid those redundant user store calls by caching task's users/roles related data at the humantask engine side. I have completed the caching implementation for PeopleQueryEvaluator and results of following operation will be cached at humantask engine. - Is Existing User - (User name, true/false) - Is Existing Role - (Role name, true/false) - Role name List for User. (User name, role list) - User name List for Role. (Role name, user list) I conducted a task creation test in order to measure the performance improvement with caching. For this test, I used a LDAP which has 20 groups and each group has 1000 of users. The Humantask has expression based user assignment, including 4 potential owner groups, 2 excluded owner groups and 3 business administrator groups. I ran a soapUI load test to create 1000 tasks using 10 concurrency with 0 test delay. Following are the result. *min (ms)* *max (ms)* *avg (ms)* *last (ms)* *total count* *tps* *bytes* *bps* *err* *rat* *Without caching* 898 3653 1698.29 1077 1000 5.87 354000 2080 0 0 *With Caching* 43 2467 184.16 127 1000 53.72 354000 19017 0 0 According to the results, there is 9X performance improvement with caching. Now I am working on making cache expiry time configurable via humantask configuration. I think default 30s is ok for most of the scenarios. *User Name List for Role* operation can return a large result set. So my question is, is it ok to cache such a large result sets ? Suggestions and thoughts are welcome. Thanks, Hasitha. -- Hasitha Aravinda, Software Engineer, WSO2 Inc. Email: [email protected] Mobile: +94 71 8 210 200
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
