5

MySQL is using too much memory, and never freeing some of it.

Despite show full processlist show that all threads are aslept, memory usage is too high. Also I see that some mysql commands (via htop) are running for 36 hs.

My server is a dedicated one, with the following specifications:

  • Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz (4 cores)
  • 16 GB RAM
  • CentOS release 6.5 (Final)
  • mysql Ver 14.14 Distrib 5.1.71

/etc/my.cnf:

[mysqld]
max_connect_errors = 800
max_allowed_packet = 64M

federated

max_connections = 300

skip-name-resolve
skip-host-cache

key_buffer_size=1G
thread_cache=16

table_cache=2048
key_buffer=1024M
myisam_repair_threads=2
sort_buffer_size=4M
read_buffer_size=2M
join_buffer_size=2M
query_cache_size=2048M
query_cache_limit=8M
read_rnd_buffer_size=1M
myisam_sort_buffer_size=64M

symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

mysqlreport

__ Key _________________________________________________________________
Buffer used   134.39M of   1.00G  %Used:  13.12
  Current     289.81M            %Usage:  28.30
Write hit      99.93%
Read hit      100.00%

__ Questions ___________________________________________________________
Total          70.65M   203.7/s
  DMS          39.84M   114.9/s  %Total:  56.39
  QC Hits      28.63M    82.5/s           40.52
  Com_          3.68M    10.6/s            5.21
  -Unknown      2.29M     6.6/s            3.24
  COM_QUIT    791.42k     2.3/s            1.12
Slow 10 s         243     0.0/s            0.00  %DMS:   0.00  Log: OFF
DMS            39.84M   114.9/s           56.39
  REPLACE      29.80M    85.9/s           42.18         74.81
  SELECT        9.51M    27.4/s           13.46         23.88
  INSERT      391.36k     1.1/s            0.55          0.98
  UPDATE      123.07k     0.4/s            0.17          0.31
  DELETE       10.32k     0.0/s            0.01          0.03
Com_            3.68M    10.6/s            5.21
  admin_comma   2.42M     7.0/s            3.42
  change_db   965.13k     2.8/s            1.37
  set_option  177.48k     0.5/s            0.25

__ SELECT and Sort _____________________________________________________
Scan          683.92k     2.0/s %SELECT:   7.19
Range         152.16k     0.4/s            1.60
Full join     142.13k     0.4/s            1.49
Range check    10.77k     0.0/s            0.11
Full rng join   2.10k     0.0/s            0.02
Sort scan      53.07M   153.0/s
Sort range      3.02M     8.7/s
Sort mrg pass   1.56k     0.0/s

__ Query Cache _________________________________________________________
Memory usage  122.83M of   2.00G  %Used:   6.00
Block Fragmnt  12.61%
Hits           28.63M    82.5/s
Inserts         9.20M    26.5/s
Insrt:Prune   9.20M:1    26.5/s
Hit:Insert     3.11:1

__ Table Locks _________________________________________________________
Waited         78.39k     0.2/s  %Total:   0.14
Immediate      55.41M   159.8/s

__ Tables ______________________________________________________________
Open             1545 of 2048    %Cache:  75.44
Opened          2.11k     0.0/s

__ Connections _________________________________________________________
Max used          171 of  300      %Max:  57.00
Total         791.74k     2.3/s

__ Created Temp ________________________________________________________
Disk table     63.96k     0.2/s
Table           2.69M     7.8/s    Size:  16.0M
File            3.12k     0.0/s

__ Threads _____________________________________________________________
Running             2 of  136
Cached             11 of   16      %Hit:  99.90
Created           805     0.0/s
Slow                0       0/s

__ Aborted _____________________________________________________________
Clients           629     0.0/s
Connects            4     0.0/s

__ Bytes _______________________________________________________________
Sent           99.96G  288.2k/s
Received       17.70G   51.0k/s

__ InnoDB Buffer Pool __________________________________________________
Usage           8.00M of   8.00M  %Used: 100.00
Read hit       98.23%
Pages
  Free              0            %Total:   0.00
  Data            501                     97.85 %Drty:   0.00
  Misc             11                      2.15
  Latched                                  0.00
Reads           9.54G   27.5k/s
  From file   168.38M   485.5/s            1.77
  Ahead Rnd   4625963    13.3/s
  Ahead Sql  22657091    65.3/s
Writes          4.03M    11.6/s
Flushes       212.50k     0.6/s
Wait Free           0       0/s

__ InnoDB Lock _________________________________________________________
Waits               1     0.0/s
Current             0
Time acquiring
  Total           927 ms
  Average         927 ms
  Max             927 ms

__ InnoDB Data, Pages, Rows ____________________________________________
Data
  Reads       212.56M   612.9/s
  Writes      286.44k     0.8/s
  fsync       118.77k     0.3/s
  Pending
    Reads           0
    Writes          0
    fsync           0

Pages
  Created       8.34k     0.0/s
  Read        539.47M    1.6k/s
  Written     212.50k     0.6/s

Rows
  Deleted      10.37k     0.0/s
  Inserted    312.27k     0.9/s
  Read          5.89G   17.0k/s
  Updated      43.99k     0.1/s
2
  • Please read and apply serverfault.com/editing-help. Also, define "too high / too much" and explain why you think it should free memory.
    – Sven
    Jun 5, 2015 at 16:55
  • It uses all available memory RAM. At some point the OS start swapping and filinally the mysql service restarts. I think that if there is no activity it should not be using that ammount of memory.
    – Jonas
    Jun 5, 2015 at 17:50

1 Answer 1

-1

I have encountered these issues previously and I discovered that its not SQL but its one of the apache threads that usually gets stuck in infinite loop. Their may be many reasons such as trying to access a location that doesn't exists or dead locks. To see if that's the case ... type "top" and see all the processes. their are many ways to debug that particular process/thread.

1.) Use gdb. 2.) Restart your apache (or nginx) and open all the processes and then go to various function calls and see which one triggers memory usage from .1 to 99.9% .

1
  • It´s a mysql dedicated server, there is no apache nor nginx running. Thanks!
    – Jonas
    Jun 5, 2015 at 18:39

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .