Mysql内存使用情况及进程

Mysql内存使用情况及进程

我发现mysql(在Centos7上)占用的内存越来越多,从htop我看到一个有许多线程的进程,我的内存约为550M/3G:

   18895 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18896 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.63 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18897 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.65 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18898 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.64 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18899 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.43 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18900 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.73 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18901 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.40 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18902 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.67 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18903 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:05.11 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18904 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.38 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18905 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.86 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18906 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.17 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18908 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:03.69 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18909 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.33 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18910 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.67 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18911 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:04.85 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18912 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18913 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18914 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18915 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18916 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18917 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.35 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18918 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.67 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18919 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18920 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18921 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18923 mysql      20   0 1157M  173M  6928 S  0.0  6.1  0:00.01 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid --skip-grant-tables
    18894 mysql      20   0 1157M  173M  6928 S  0.0  6.1  1:05.88

据我了解,这些过程都在缓冲中,从免费的角度来看也是如此:

                  total        used        free      shared  buff/cache   available
Mem:           2845         402          92         154        2350        2110
Swap:          2047           0        2047

我已经尝试通过这种方式调整 mysql /etc/my.cnf 文件,但没有什么改进:

innodb_buffer_pool_size = 128M

join_buffer_size = 64M
sort_buffer_size = 2M
read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
max-connections=20

symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

我很困惑为什么 htop(以及 Proxmox 内存监控)会报告这种使用情况,而 free 显示可用内存超过 2G:

    Mem[|||||||||||||||||||||||||||||||||||||||||||||||||||||||||557M/2.78G]

对此有什么建议或解释吗?提前感谢任何回复。

答案1

mysqld 实际使用的内存为 173MB,与您粘贴的配置大致相同。Htop 分别显示所有线程,即使它们的内存实际上是共享的。

使用 top 可以获得更直观的表示。

相关内容