我最近开始了一个PoC项目,其中我们正在开发一个小型Web应用程序。最初的设置是在AWS的微型实例上完成的。我们在rails + mysql堆栈上。在ubuntu @ aws微实例上减少mysql的内存消耗
安装/运行MySQL后,我发现大约有500多MB的RAM已经被使用;剩下的系统只剩下少量的620 MB RAM(微型实例)。
我们的应用程序在这个阶段相当简单。我可以做些什么来减少MySQL服务器消耗的内存吗?
欣赏帮助。
我最近开始了一个PoC项目,其中我们正在开发一个小型Web应用程序。最初的设置是在AWS的微型实例上完成的。我们在rails + mysql堆栈上。在ubuntu @ aws微实例上减少mysql的内存消耗
安装/运行MySQL后,我发现大约有500多MB的RAM已经被使用;剩下的系统只剩下少量的620 MB RAM(微型实例)。
我们的应用程序在这个阶段相当简单。我可以做些什么来减少MySQL服务器消耗的内存吗?
欣赏帮助。
只需添加到其他的答案。我最近在亚马逊微型实例(而不是Ubuntu)中遇到了这个问题。 my.cnf文件几乎是空的,所以我做的是这样的:
cp /etc/my.cnf /etc/my.cnf.orig
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
编辑my.cnf并启用innodb行(如果适用)。重新启动mysqld。
而且微实例没有掉,这可能是一个问题..
SWAPFILE=/mnt/swapfile.swap
dd if=/dev/zero of=$SWAPFILE bs=1M count=512
mkswap $SWAPFILE
swapon $SWAPFILE
然后在/etc/rc.local中添加:
swapon命令/mnt/swapfile.swap
为了节省内存在Ruby中,你可能需要使用Ruby企业:
bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
gpasswd -a root rvm
source /etc/profile.d/rvm.sh
rvm get head
rvm reload
rvm install ree
rvm --default use ree
在你的my.cnf文件:
performance_schema = 0
并重新启动mysql。如果您以前使用过内存,应该会显着减少内存使用量。
2016编辑:从MySQL 5.7.8起,上面是不够的,释放你的性能架构数据的存储器:
在MySQL 5.7.8中,即使性能架构被禁用,它将继续填充global_variables,session_variables,global_status和session_status表。
(source)
为了防止此问题,除了performance_schema
设置show_compatibility_56
为1。也就是说,你的my.cnf的变化应该是这样的:
performance_schema = 0
show_compatibility_56 = 1
我只有500MB RAM的服务器,发现MySQL的使用大量的RAM作为我的表有较大的启动。在玩了一大堆设置之后,对我来说减少了内存使用量就是将我所有的表格转换为MyISAM。 如果你不需要innodb转换表的功能,MyISAM可以帮助很多。 您可以转换表是这样的:
ALTER TABLE test.mytable ENGINE=MyISAM;
这种变化我发现,内存使用量减少了20%之后。 为了进一步减少内存使用量,您可以将所有表格转换为MyISAM,然后关闭MySQL中的innodb支持。 这减少了50%的记忆体使用量。
您可以通过添加做到这一点:
[mysqld]
default_storage_engine=myisam
innodb=OFF
,然后重新启动mysql的。
你如何定义内存消耗?有很多控制内存大小的MySQL设置。 –
我不是mysql管理员,但我看到在系统上,除了操作系统本身和mysql服务器以外,没有别的东西在运行,并且消耗了超过500M的... – Gyan
优化您的查询!查看慢速查询日志以查看确切的查询。可能很多内存浪费在临时表中 –