https://forge.joomlapolis.com/https://forge.joomlapolis.com/favicon.ico?17095821032013-04-19T17:15:29ZJoomlapolis forgeCB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91302013-04-19T17:15:29Zkrileonkrileon@joomlapolis.com
<ul></ul><p>Appears to cost 8MB of memory per 200 users. This appears to be far too much. At most should be 1MB or 0.5MB. At this rate when reaching the thousands mark you'll be exhausting far too much memory.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91312013-04-19T17:30:40Zkrileonkrileon@joomlapolis.com
<ul></ul><p>Appears to be due to query calls. A group with 1,000 users has over 2,000 queries. Many repeating of the following.</p>
<p>SELECT c.*, u.* <br /> FROM jos_users AS u <br /> LEFT JOIN jos_comprofiler AS c <br /> ON c.id = u.id <br /> WHERE u.id = USERID<br />SELECT a.id <br /> FROM jos_user_usergroup_map AS map <br /> LEFT JOIN jos_usergroups AS a <br /> ON a.id = map.group_id <br /> WHERE map.user_id = USERID</p>
<p>They appear to be ACL related.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91322013-04-19T17:36:14Zkrileonkrileon@joomlapolis.com
<ul></ul><p>This is due to calling get_groups_below_me for each users in the Users tab inside of getAuthorization when adding authorization checks to the data call. Once the authorization checks are removed the issue is completely gone.</p>
<p>The first query comes from CB it self and the second comes from Joomla. Need to be able to get groups below a user without causing so much overhead even though the results are cached.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91332013-04-19T17:39:23Zkrileonkrileon@joomlapolis.com
<ul></ul><p>Second issue is get_user_moderator as it's also running get_groups_below_me. So a more performance optimized method for checking if a user is a moderator is needed as well.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91342013-04-19T18:49:29Zkrileonkrileon@joomlapolis.com
<ul></ul><p>It's due to the following.</p>
<p>if ( ( ! $owner ) && method_exists( $row, 'getOwner' ) ) {<br /> $owner = $row->getOwner();<br />}</p>
<p>This is called in the access function of cbgjData. Once removed performance is fine. It's used in the authorization function to see if the owner is the viewing user. So maybe this should be improved to only need the user id as that's all that is being checked?</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91352013-04-19T18:51:09Zkrileonkrileon@joomlapolis.com
<ul></ul><p>The above doesn't get rid of all the memory usage (you will have memory usage increase with more users, it's just logical that it does), but it does remove a good chunk of the memory usage as well as 2,000 queries is reduced to 100.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=91362013-04-19T19:31:12Zkrileonkrileon@joomlapolis.com
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Resolved</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>This appears to have resolved the issue. It does not seam to be possible to improve memory usage any further with the current usage.</p> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=95892013-08-06T20:36:25Zkrileonkrileon@joomlapolis.com
<ul><li><strong>Target version</strong> set to <i>2.8.0</i></li></ul> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=130952015-07-16T19:12:14Zkrileonkrileon@joomlapolis.com
<ul><li><strong>Target version</strong> changed from <i>2.8.0</i> to <i>3.0.0</i></li></ul> CB GroupJive - Bug #3981: Groups with large amount of users causing massive performance issueshttps://forge.joomlapolis.com/issues/3981?journal_id=136382015-11-23T17:40:21Zkrileonkrileon@joomlapolis.com
<ul><li><strong>Status</strong> changed from <i>Resolved</i> to <i>Closed</i></li></ul>