Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL总内存分配使用率?内存泄漏?_Mysql_Memory_Memory Management - Fatal编程技术网

MySQL总内存分配使用率?内存泄漏?

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

我使用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时间+命令
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