MySQL总内存分配使用率?内存泄漏?
我使用5.6.21-70.0进行性能测试 当我跑的时候 mysqlslap-a--concurrency=40--1000个查询数--iterations=500--engine=innodb--debug info-utest-p 做一些性能测试,ram增长超过最大内存使用量,永不释放 什么时候完成这个任务 内存显示使用率为78% 我有1G的物理内存,并且我不使用交换 KiB成员:总计1016656个,使用953808个,空闲62848个,缓冲区30324个 KiB交换:总计0,使用0,免费0。41384缓存内存 PID用户PR NI VIRT RES SHR S%CPU%MEM时间+命令MySQL总内存分配使用率?内存泄漏?,mysql,memory,memory-management,Mysql,Memory,Memory Management,我使用5.6.21-70.0进行性能测试 当我跑的时候 mysqlslap-a--concurrency=40--1000个查询数--iterations=500--engine=innodb--debug info-utest-p 做一些性能测试,ram增长超过最大内存使用量,永不释放 什么时候完成这个任务 内存显示使用率为78% 我有1G的物理内存,并且我不使用交换 KiB成员:总计1016656个,使用953808个,空闲62848个,缓冲区30324个 KiB交换:总计0,使用0,免费0
26049 mysql 20 0 1544156 778316 3992 S 16.376.66:24.01 mysqld **mysqld似乎使用了大约700M的内存?为什么它超过了最大内存使用量? 为什么mysql从不释放内存** my mysqlturning.pl显示: [确定]可用连接的最高使用率:70%(42/60) [确定]密钥缓冲区大小/MyISAM索引总数:32.0M/98.0K [-]读/写:40%/60% [-]总缓冲区:336.0M全局+1.1M每个线程(最多60个线程) [确定]最大可能内存使用量:403.5M(占已安装RAM的40%) 我的----
尝试在InnoDB表上运行
FLUSH TABLES
,它将根据.ibd文件关闭文件。我希望它能释放内存使用
你可能正在使用一台32位的机器,它通常提供大约3G的数据,但是你使用了40%的物理内存,这已经足够了,但是我认为你需要扩展呼吸空间,你肯定需要允许缓冲区大小略大于你的数据或索引页的大小
尝试使用64位机器,使用交换将使它更容易呼吸,包括数据/索引大小的更大缓冲池。我已经找到了内存泄漏发生的原因。 现在我只有1GB内存,没有交换 性能_模式导致在启动时分配大约400米的内存。innodb将占用多达4亿内存 所以,因为我使用了.cnf
table-definition-cache= 1024
table-open-cache= 2048
max-connections= 60
它将导致高性能\u模式分配,
更多信息请参见
谢谢你的帖子,现在我使用的是centos 7 64位机器。“Linux 3.10.0-123.9.3.el7.x86_64#1 SMP周四11月6日15:06:03 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux”,现在我正在使用1G物理内存,刷新表不会释放内存使用量:(它总是保持77%的1GB内存使用率。只有一个空数据库。但我使用的是percona-server-5.6.21。我不确定这个版本的mysql是否有缺陷?你的数据库中有没有锁定的表?我认为这没有服务器问题。看看优化吧,希望它能帮助我找到内存泄漏的原因。现在我只有1GB内存,没有交换。t性能模式导致分配内存约为4亿。innodb将占用4亿内存,因此,my.cnf use table definition cache=1024 table open cache=2048 max connections=60计算性能模式保留内存,这意味着它将导致分配高性能模式,更多信息请参阅
# Generated by Percona Configuration Wizard (http://tools.percona.com/) version REL5-20120208
[mysql]
# CLIENT #
port = 3306
socket = /data/data/mysql.sock
[mysqld]
# GENERAL #
user = mysql
default-storage-engine = InnoDB
socket = /data/data/mysql.sock
pid-file = /data/data/mysql.pid
character-set-server=utf8
collation-server=utf8_general_ci
# MyISAM #
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP
# SAFETY #
max-allowed-packet = 16M
max-connect-errors = 1000000
skip-name-resolve
sql-mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ONLY_FULL_GROUP_BY
sysdate-is-now = 1
innodb = FORCE
# DATA STORAGE #
datadir = /data/data/
# BINARY LOGGING #
log-bin = /data/data/mysql-bin
expire-logs-days = 14
sync-binlog = 1
# CACHES AND LIMITS #
tmp-table-size = 32M
max-heap-table-size = 32M
query-cache-type = 0
query-cache-size = 0
max-connections = 60
thread-cache-size = 50
open-files-limit = 65535
table-definition-cache = 1024
table-open-cache = 2048
# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 64M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 64M
# LOGGING #
log-error = /data/data/mysql-error.log
log-queries-not-using-indexes = 0 # slow will not log the query which do not use index
long-query-time = 1
slow-query-log = 1
slow-query-log-file = /data/data/mysql-slow.log
table-definition-cache= 1024
table-open-cache= 2048
max-connections= 60