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

几个PHP脚本通过我的CentOS 6.5上的crontab执行,每个php脚本至less包含一个数据库请求。 取决于php对象的大小和types,在某些特定情况下,mysqld服务会分配太多的物理内存

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

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

你知道如何释放物理和虚拟内存,例如每个脚本执行后不重启mysql服务器?

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

你不会在一般的酒店房间里为20人举办派对,只是为了发现房间太小,第二天晚上再试一次,希望你能在那里容纳20人。 你要么预订一个更大的房间,要么邀请更less的人。