MySQL設定の最適化-mysqldのメモリ不足


15

サーバー用に最適化するためにmy.confファイルで変更する設定について少し混乱しています(トラフィックが多いためにmysqlサーバーがクラッシュし続けます)。

my.cnfファイルは次のとおりです。

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

サーバーの仕様は次のとおりです。

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

Ubuntu 12.04 LTSの実行

私のパーティションは次のとおりです。

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

どんな助けでも大歓迎です。

エラーログを見ると、mysqldのメモリが不足していることがわかります。

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB

回答:


10

serverguide wikiからの一般的な回答

MySQLチューナー mysqltunerをインストールする

MySQL Tunerは、実行中のMySQLインスタンスに接続し、ワークロードに最適な設定方法を提案する便利なツールです。サーバーの実行時間が長いほど、mysqltunerが提供できるアドバイスは改善されます。実稼働環境では、ツールを実行する前に少なくとも24時間待つことを検討してください。Ubuntuリポジトリからmysqltunerをインストールできます。

sudo apt-get install mysqltuner

それがインストールされたら、それを実行します:

 mysqltuner

最終報告を待ちます。上部のセクションにはデータベースサーバーに関する一般情報が表示され、下部のセクションにはmy.cnfで変更するチューニングの提案が表示されます。これらのほとんどは、再起動せずにサーバー上でライブで変更できます。本番環境で変更する関連変数については、公式のMySQLドキュメント(「参考文献」セクションのリンク)を参照してください。以下は、実稼働データベースからのレポート例の一部であり、クエリキャッシュの量を増やすことで何らかの利点があることを示しています。

--------推奨事項----------------------------------------- ------------
一般的な推奨事項:
    OPTIMIZE TABLEを実行して、パフォーマンスを向上させるためにテーブルを最適化します
    table_cacheを徐々に増やして、ファイル記述子の制限を回避します
調整する変数:
    key_buffer_size(> 1.4G)
    query_cache_size(> 32M)
    table_cache(> 64)
    innodb_buffer_pool_size(> = 22G)

データベースのチューニングに関する最後のコメント:特定の設定が最適であると広く言えますが、パフォーマンスはアプリケーションによって異なります。たとえば、Wordpressに最適なものは、Drupal、Joomla、または独自のアプリケーションには最適ではないかもしれません。パフォーマンスは、クエリの種類、インデックスの使用、データベース設計の効率などに依存します。使用しているアプリケーションに基づいて、データベースのチューニングのヒントを検索するのに時間をかけると便利な場合があります。特定のポイントを超えると、調整を行ってもわずかな改善しか得られないため、アプリケーションを改善するか、より強力なハードウェアを使用するか、スレーブサーバーを追加してデータベース環境を拡大することを検討することをお勧めします。


  • mysqltunerレポートのパフォーマンスメトリックセクションをご覧ください。可能な最大メモリを50%未満に保ちます。
  • tmp_table_sizemax_heap_table_size variableこれらを等しく高く保つ。
  • join_buffer_size、少量の増加; が乗算されmax_connectionsます。
  • innodb_buffer_pool_size。高くします。


0

docker composeの解像度

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

構成コンテンツ./config/mysql/my.cnf

[mysqld]
performance_schema = off
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.