Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
5年以上前投稿 修正あり

MySQLのためのLinuxチューニングヒント

LinuxのMySQLサーバで最低限やっておかなくてはならないファイルシステム、メモリ、CPUに関する設定のメモ。

原文
Linux performance tuning tips for MySQL - MySQL Performance Blog (English)
原文ライセンス
CC BY-NC-SA
翻訳依頼者
D98ee74ffe0fafbdc83b23907dda3665
翻訳者
D98ee74ffe0fafbdc83b23907dda3665 doublemarket
原著者への翻訳報告
未報告


December 7, 2013 By Alexander Rubin

恐らくほとんどのMySQL本番環境はLinux上で動いていることだろう。なので、MySQLのパフォーマンスを上げるのに有用な、最も重要なLinuxのチューニングのためのヒントについて書こうと決めた。特に新しい情報はなくて、どれもよく知られているものではあるが、ブログ記事にまとめてみる。

ファイルシステム

  • ext4 (またはxfs) をnoatimeオプション付きでマウント
  • スケジューラはdeadlineかnoop

    # echo deadline >/sys/block/sda/queue/scheduler
    grub.confに"elevator=deadline"を追加
    

(詳細はLinuxスケジューラとTPCC風ベンチマークの記事を参照)

メモリ

  • swappinessとNUMAの設定

    # echo 0 > /proc/sys/vm/swappiness
    /etc/sysctl.confに"vm.swappiness = 0"を追加
    
  • NUMAインターリーブを設定

    numactl --interleave=all
    

Percona Serverを使っている場合、Percona Server supports NUMA controlにあるように、mysqld_safeスクリプトの中にこれが書いてある。

Jeremy Cole氏のブログNUMAの素晴らしい概要記事NUMAツールが詳しい。

(それから、innodb_flush_method=O_DIRECTを設定するのも忘れないように)

CPU

省電力モードが無効になっているのを確認すること。

  • /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorを確認する。この値はオンデマンドで変更はできない
  • /proc/cpuinfoを確認し、"model name"の下に表示されているCPUの周波数を比較する。
  • "ondemand"が実行されていたら無効にする。

"ondemand"が起動している確認する方法。

$ ps ax| grep kondemand|wc -l
65
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
ondemand

上のように起動している状態だと、こうなる。

/proc/cpuinfo:
model name : Intel(R) Xeon(R) CPU E5-4640 0 @ 2.40GHz
..
cpu MHz : 1200.000

この場合、"ondemand"を無効にする必要がある。

これらのシンプルなチューニングのヒントは、MySQLのパフォーマンスを上げ、より安定性を高くする(スワップもしなくなる)。これ以外にもLinuxの設定やMySQLに関する経験があれば聞かせていただきたいものだ。

次の記事
MySQLを使ったアプリケーションを作るエンジニアが知るべきMySQLの内部構造とは?
前の記事
クエリの最適化とキャッシュの有効化の利点・欠点

Feed small 記事フィード

新着記事Twitterアカウント

新着翻訳リクエストTwitterアカウント