减少mysql在ubuntu@aws微示例上的内存消耗

qni6mghb  于 2022-10-31  发布在  Mysql
关注(0)|答案(5)|浏览(152)

我最近开始了一个PoC项目,我们正在开发一个小型的Web应用程序。初始设置是在AWS的一个微示例上完成的。我们使用的是Rails+mysql堆栈。
在安装/运行MySQL之后,我发现已经消耗了大约500+ MB的RAM;为系统的其余部分留下的空间相当少(微示例只有620 MB RAM)。
我们的应用程序在这个阶段是相当简单的。我可以做些什么来减少MySQL服务器消耗的内存吗?
感谢你的帮助。

6qqygrtg

6qqygrtg1#

MySQL 8.0.30起:
编辑您的/etc/mysql/my.cnf文件并添加以下内容:

[mysqld]
performance_schema = 0

重新启动你的mysql服务器,快乐就会接踵而至。
要验证配置更改是否已正确加载,请启动一个新的mysql会话(例如mysql -u root -p)并运行以下命令:

SHOW VARIABLES LIKE '%perf%';

您应该会在顶部看到以下行:

| performance_schema  | OFF   |

它应该是OFF。如果它是ON,则由于某种原因,您的配置没有正确加载。

rur96b6h

rur96b6h2#

在MySQL配置文件(my.cnf)中更改此设置

key_buffer              = 8M 
max_connections         = 30 # Limit connections
query_cache_size        = 8M # try 4m if not enough 
query_cache_limit       = 512K
thread_stack            = 128K
atmip9wb

atmip9wb3#

为了补充另一个答案,我最近在使用Amazon Micro示例(不是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中添加:
交换文件/mnt/交换文件.swap
为了节省ruby中的内存,您可能需要使用ruby enterprise:

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
ukqbszuj

ukqbszuj4#

我有一个只有500mb内存的服务器,我发现mysql开始使用大量的内存,因为我的表变大了。在玩了一堆设置后,我减少内存使用的是将我所有的表转换为MyISAM。如果你不需要nodb的功能,将表转换为MyISAM会有很大帮助。你可以这样转换表:

ALTER TABLE test.mytable ENGINE=MyISAM;

在这个改变之后,我发现内存使用减少了20%。为了进一步减少内存使用,你可以把所有的表转换成MyISAM,然后完全关闭mysql中的innodb支持。这减少了我50%的内存使用。
您可以通过添加以下内容来实现此目的:

[mysqld]
default_storage_engine=myisam
innodb=OFF

然后重新启动mysql。

inn6fuwd

inn6fuwd5#

配置交换文件
 sudo fallocate -l 2G /交换文件
sudo chmod 600 /交换文件
sudo mkswap /交换文件
sudo交换打开/交换
文件sudo cp /etc/fstab/etc/fstab. bak
 sudo nano /etc/fstab

在结尾处添加以下行,保存并关闭:
/swapfile swap swap defaults 0 0
/etc/sysctl.conf文件中的所有文件都是空的。
在结尾处添加以下行,保存并关闭:虚拟交换性=10

配置PHP
 sudo nano /opt/bitnami/php/etc/存储器配置文件

; Bitnami memory configuration for PHP-FPM
;
; Note: This will be modified on server size changes
pm.max_children=10
pm.start_servers=2
pm.min_spare_servers=2
pm.max_spare_servers=10
pm.max_requests=5000

**配置MariaDB(MySQL)**
 sudo nano /opt/bitnami/mariadb/conf/bitnami/memory.conf文件中的数据库文件。

[mysqld]

# wait_timeout = 120

long_query_time = 1
query_cache_limit=2M
query_cache_type=1
query_cache_size=8M
innodb_buffer_pool_size=16M

# innodb_log_file_size=128M

# innodb_flush_method=O_DIRECT

tmp_table_size=16M
max_connections = 100
max_user_connections = 250
key_buffer_size=8M

重新启动/opt/bitnami/ctlscript.sh

相关问题