如何释放mysql服务器使用的物理和虚拟内存?

ibe*_*ski 0 mysql linux memory

在我的 CentOS 6.5 上通过 crontab 执行了几个 php 脚本,每个 php 脚本都包含至少一个数据库请求。根据 php 对象的大小和类型,在某些特定情况下,mysqld 服务分配了过多的物理内存。

有时,1.7GB 中只有 15MB 可用内存,交换内存也可能分配到 95% 的使用率。为了释放服务器内存,唯一的替代解决方案是重新启动 mysqld 服务器,但几天后内存又几乎满了。

为了忽略 mysqld 重启,我尝试使用刷新查询缓存RESET QUERY CACHE;FLUSH QUERY CACHE;但内存状态没有任何变化。我也尝试执行,sync && echo 3 | sudo tee /proc/sys/vm/drop_caches但内存状态再次相同。

你知道如何在不重启mysql服务器的情况下在每次脚本执行后释放物理和虚拟内存吗?

Jan*_*nen 7

如果是 MySQL 吃光了所有内存,那么您必须调低其值或增加服务器 RAM。如果你告诉 MySQL 它可以有 16 GB 的 RAM 但只有 8 GB 可用,那么事情确实会发生。

您不会为了发现房间太小而在普通酒店房间里举办 20 人的派对,然后第二天晚上再试一次,希望可以容纳 20 人。您要么预订更大的房间,要么邀请更少的人。