MySQL optimization help - 40,000 member site

Discussion in 'Troubleshooting' started by paulmartin005, Jan 20, 2011.

  1. paulmartin005

    paulmartin005 New Member

    Joined:
    Apr 21, 2009
    Messages:
    4
    Hello,

    I run Amember pro on a powerful server with Dual 'Nehalem' Quad Core Xeon 5520 + 12GB RAM. I have about 40,000 users in 20+ products that are mostly live events. So in my situation some times I have as much as 1000 or 2000 members trying to sign up or login using AmemberPro (specially during promotional free events).

    I have noticed few MySQL errors in the past such as user exceeded max connections, could not connect to mysql db.

    I have a big event coming up next month and I am wondering what tuning of mysql/apache I could do to avoid down time or slow loading.

    I recently ran the tuning-primer.sh (a mysql analyzer at http://www.day32.com/MySQL/).

    Following recommendations were flagged in red so I though i should seek help from this forum on how to fix it.

    Code:
    QUERY CACHE
    Query cache is enabled
    Current query_cache_size = 128 M
    Current query_cache_used = 2 M
    Current query_cache_limit = 1 M
    Current Query cache Memory fill ratio = 2.19 %
    Current query_cache_min_res_unit = 4 K
    Query Cache is 21 % fragmented
    Run "FLUSH QUERY CACHE" periodically to defragment the query cache memory
    If you have many small queries lower 'query_cache_min_res_unit' to reduce fragmentation.
    Your query_cache_size seems to be too high.
    Perhaps you can use these resources elsewhere
    MySQL won't cache query results that are larger than query_cache_limit in size
    
    Code:
    TEMP TABLES
    Current max_heap_table_size = 1.00 G
    Current tmp_table_size = 1.00 G
    Of 4235433 temp tables, 49% were created on disk
    Perhaps you should increase your tmp_table_size and/or max_heap_table_size
    to reduce the number of disk-based temporary tables
    Note! BLOB and TEXT columns are not allow in memory tables.
    If you are using these columns raising these values might not impact your
    ratio of on disk temp tables.
    
    My current my.cnf file is configured as
    Code:
    [mysqld]
    skip_name_resolve
    set-variable = max_connections=2000
    set-variable = thread_cache_size=42
    set-variable = long_query_time=1
    set-variable = thread_cache_size=42
    set-variable = innodb_buffer_pool_size=128M
    set-variable = innodb_thread_concurrency=4
    set-variable = wait_timeout=10
    set-variable = query_cache_type=1
    set-variable = query_cache_size=128M
    set-variable = query_cache_limit=1M
    set-variable = join_buffer_size=1M
    set-variable = table_cache=1024
    set-variable = tmp_table_size=1024M
    set-variable = max_heap_table_size=1024M
    set-variable = key_buffer=384M
    set-variable = key_buffer_size=1024M
    safe-show-database
    log-slow-queries
    set-variable = long_query_time=1
    #set-variable = max_heap_table_size=4096M
    #set-variable = tmp_table_size=4096M
    I really appreciate any help/suggestions any one can give me for this issue. I am a newbie to server administration and my 3rd party admin does not provide any support unless I specifically ask him! so any suggestions on apache/php is also appreciated.

    Thank you very much.
  2. drmartinjr3i3

    drmartinjr3i3 aMember Pro Customer

    Joined:
    Nov 21, 2010
    Messages:
    65
    What is your site?
  3. skippybosco

    skippybosco CGI-Central Partner Staff Member

    Joined:
    Aug 22, 2006
    Messages:
    2,526
    I'm not familiar with the day32 tuner, can you run this on your server and post back the results:

    http://blog.mysqltuner.com/download/

    Note: Ensure your server is running at least 24 hours without a restart, and preferably during a period where the kind of peak you mentioned has happened and no restart has occurred.

Share This Page