[buddypress-trac] [BuddyPress] #3659: Recently Active widget	doesn't scale
    buddypress-trac at lists.automattic.com 
    buddypress-trac at lists.automattic.com
       
    Thu Oct  6 17:17:17 UTC 2011
    
    
  
#3659: Recently Active widget doesn't scale
---------------------------+-----------------------------
 Reporter:  mpvanwinkle77  |      Owner:
     Type:  defect         |     Status:  new
 Priority:  normal         |  Milestone:  Awaiting Review
Component:  Core           |    Version:  1.2.10
 Severity:  normal         |   Keywords:  needs-patch
---------------------------+-----------------------------
 Hello, I don't have a solution for this yet, but I wanted to add it to the
 mix. The Recently Active (and Who's Online too I think) widgets don't
 scale well. I have a site with 98,000+  registered users and this query
 used by the widget was just killing the site:
 {{{
 SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename,
 u.user_login, u.display_name, u.user_email , um.meta_value as
 last_activity FROM wp_users u
 LEFT JOIN wp_usermeta um ON um.user_id = u.ID
 WHERE u.spam = 0
 AND u.deleted = 0 AND u.user_status = 0 AND um.meta_key = 'last_activity'
 ORDER BY um.meta_value
 DESC LIMIT 0, 18;
 }}}
 Clearly the scale of our community is a big factor. But we have an entire
 server dedicated solely to MySQL and three for httpd ... and even with
 these resources we were getting crushed.
 I'm trying to think of ways to scale this better. I'm considering creating
 a field in the options table to store IDs of logged in users and then
 running those IDs through get_userdata() which should at least be getting
 cached by W3 Total Cache. This approach would come with a little more PHP
 overhead but hopefully spare my database server the burden of the direct
 user query.
 In general I think some modifications to bp_core_get_users() ( i.e.
 BP_Core_User ) could solve the problem. Perhaps adding caching logic? Or
 perhaps querying just the wp_usermeta table for user_id's and then
 populating each one with get_userdata() ?
 So anyway, just wanted to start the discussion and get feedback.
-- 
Ticket URL: <https://buddypress.trac.wordpress.org/ticket/3659>
BuddyPress <http://buddypress.org/>
BuddyPress
    
    
More information about the buddypress-trac
mailing list