39

私は最近、小さな Web アプリを開発している PoC プロジェクトを開始しました。初期セットアップは、AWS のマイクロ インスタンスで行われます。Rails + mysqlスタックを使用しています。

MySQL をインストール/実行した後、約 500 MB 以上の RAM が既に消費されていることがわかりました。残りのシステムにはかなり少ない量を残します (マイクロ インスタンスには 620 MB の RAM しかありません)。

この段階では、私たちのアプリはかなり単純です。MySQL サーバーが消費するメモリを減らすために何かできることはありますか?

助けに感謝します。

4

5 に答える 5

106

あなたの/etc/my.cnfファイルで:

performance_schema = 0

そして、MySQL を再起動します。以前にオンにしていた場合、これによりメモリ使用量が大幅に削減されるはずです。


編集: 5.7.8 から 8.0.1 までの MySQL バージョン ( 8.0.1 以降は必要ありません) の場合、上記ではパフォーマンス スキーマ データのメモリを解放するのに十分ではありません。

MySQL 5.7.8 の時点で、パフォーマンス スキーマが無効になっている場合でも、global_variables、session_variables、global_status、および session_status テーブルに入力し続けます。

ソース

この動作を防ぐshow_compatibility_56には、 に加えて 1 を設定しperformance_schemaます。つまり、 my.cnf の変更は次のようになります。

performance_schema = 0
show_compatibility_56 = 1
于 2013-10-01T12:25:11.817 に答える
42

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
于 2012-05-20T20:31:15.403 に答える
2

他の答えに追加するだけです。私は最近、Amazonマイクロインスタンス(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
于 2012-05-20T20:39:49.267 に答える
1

500MB の RAM しかないサーバーを使用していますが、テーブルが大きくなるにつれて、mysql が大量の RAM を使用し始めていることがわかりました。一連の設定で遊んだ後、メモリ使用量を削減したのは、すべてのテーブルを MyISAM に変換することでした。テーブルをMyISAMに変換するinnodbの機能が必要ない場合は、かなり役立ちます。次のようにテーブルを変換できます。

ALTER TABLE test.mytable ENGINE=MyISAM;

この変更後、メモリ使用量が 20% 減少したことがわかりました。メモリ使用量をさらに削減するには、すべてのテーブルを MyISAM に変換してから、mysql での innodb サポートを完全にオフにします。これにより、メモリ使用量が 50% 削減されました。

これを行うには、次を追加します。

[mysqld]
default_storage_engine=myisam
innodb=OFF

そしてmysqlを再起動します。

于 2016-12-28T19:03:14.820 に答える