Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
サバフェス! 2015 Spring 2015-03-26
Lightning Talk
@ttkzw 滝澤隆史
チーム名: zzz
私は誰
•  ⽒氏名: 滝澤  隆史  @ttkzw
•  所属: 株式会社ハートビーツ
▫  普段はサーバの構築や運⽤用をやっています。
•  チーム名: zzz
▫  メンバー: @ttkzw ⼀一⼈人チーム
▫  hubでギネスを飲みなが...
注意事項
•  本資料料はIDCフロンティア様主催の「サバフェ
ス!  2015 Spring」に特化した内容です。
▫  https://2015spring.serverfesta.info/
•  ここで紹介したパラメータを参考にする場合...
2015/03/26サバフェス!  2015 Spring
4
READMEに書いてあるパスワードが
実際のものと違ってログインできな
かった。
2015/03/26サバフェス!  2015 Spring
5
ベンチマークが始まらなかった。
2015/03/26サバフェス!  2015 Spring
6
3⽉月6⽇日(⼟土)0:00〜~
アイドルマスター
シンデレラガールズ
が始まったのでTVを
⾒見見始めた。
やはりベンチマークが始まらなかった。
2015/03/26サバフェス!  2015 Spring
7
たぶん、深夜2:30頃
⼼心が折れかかっていたが、
4⽇日⽬目にしてやっと1回だけ通った。
2015/03/26サバフェス!  2015 Spring
8
3⽉月8⽇日0時過ぎに実
⾏行行したもの
その後、2回⽬目のベンチマークがとれ
ないまま第1陣が終了了した。
2015/03/26サバフェス!  2015 Spring
9
終了了後の運営による計測
期間中に成功した
ただ1回の計測
「延⻑⾧長戦」では快適になりました。
運営の皆様、ありがとうございます。
2015/03/26サバフェス!  2015 Spring
10
2015/03/26サバフェス!  2015 Spring
11
Percona 5.6
•  元々Perconaを採⽤用する予定だった。
▫  Perconaは昔からioDrive向けの資料料を出していた
のでよいスコアが出るのではと期待。
•  最初は基準値をとりたかったのでMySQL 5.6系
の標準的...
2015/03/26サバフェス!  2015 Spring
13
⽅方針
•  可能な限りInnoDBバッファプールにメモリを割
り当てる。
▫  キャッシュメモリを使わせない。
–  →Direct I/Oでがんばる
•  無駄な処理理を⾏行行わせない。
•  フラッシュ処理理を調整
▫  当初は⼩小まめ...
低レイヤーを攻めろ!
ディスクI/O、ネットワークI/O、メモリ周り
2015/03/26サバフェス!  2015 Spring
15
OS周り: 不不要なものを無効化
•  SELinuxをdisabledにして不不要な処理理をバイパス。
▫  /etc/sysconfig/selinux
–  SELINUX=disabled
•  不不要なサービスを停⽌止して、メモリを...
OS周り: パラメータチューニング
•  /etc/sysctl.conf
▫  vm.swappiness = 0
▫  vm.dirty_background_ratio = 5
▫  vm.dirty_ratio = 10
▫  net....
OS周り: ファイルシステム
•  ファイルシステム
▫  EXT4を採⽤用。XFSを試したが悪化した。
•  マウントオプション
▫  noatime,nodiratime → atimeの更更新を抑制
▫  discard → TRIMを使...
ioDriveの設定
•  /etc/modprobe.d/iomemory-vsl.conf
▫  options iomemory-vsl use_workqueue=0
–  I/Oスケジューラーの処理理をバイパスさせる。
•  /et...
2015/03/26サバフェス!  2015 Spring
20
my.cnf
•  datadir=/fioa/mysql
•  socket=/fioa/mysql/mysql.sock
•  tmpdir=/fioa/tmp
▫  テンポラリテーブルなどをioDriveに
•  user=mysql
•...
ネットワーク
•  max_connections=40
▫  tpcc_mysqlの-cが30なので、30+αに。
•  max_allowed_packet=4M
▫  デフォルト値のまま
•  net_buffer_length=256K...
NUMA
•  flush_caches=ON (mysqld_safe)
•  numa_interleave=ON (mysqld_safe)
•  innodb_buffer_pool_populate=ON
2015/03/26サバフェ...
スレッドプールの利利⽤用
•  thread_handling=pool-of-threads
•  thread_pool_size=64
2015/03/26サバフェス!  2015 Spring
24
※ http://www.perco...
その他
•  performance_schema=OFF
•  table_open_cache=1600
•  table_open_cache_instances=16
•  query_cache_type=0
•  query_cac...
2015/03/26サバフェス!  2015 Spring
26
レギュレーション
•  innodb_doublewrite
•  innodb_flush_log_at_trx_commit=1
2015/03/26サバフェス!  2015 Spring
27
お約束
•  innodb_file_per_table
2015/03/26サバフェス!  2015 Spring
28
Direct I/O
•  innodb_flush_method=ALL_O_DIRECT
▫  Percona, MariaDB向け
•  innodb_log_block_size=4096
•  innodb_disable_sort_...
バッファプール
•  innodb_buffer_pool_size=28G
▫  SWAPが発⽣生するぎりぎりで、可能な限り割り当
てた。
•  innodb_buffer_pool_instances=8
▫  デフォルト値が性能が出た。
...
I/Oスレッド
•  innodb_write_io_threads=20
•  innodb_read_io_threads=20
2015/03/26サバフェス!  2015 Spring
31
フラッシュ
•  innodb_flush_neighbors=0
•  innodb_adaptive_flushing=1
•  innodb_io_capacity=8000
•  innodb_io_capacity_max=9500
...
第1陣の中断時の設定はここまで
•  約39000tpmくらい
•  ここまでは正統的なチューニングかな。
•  もうちょい頑張っても1000〜~2000tpmくらい
しか増えないかなと。
•  ということで、延⻑⾧長戦は⽅方針を転換
2015...
2015/03/26サバフェス!  2015 Spring
34
ログ
•  innodb_log_file_size=512M
•  innodb_log_files_in_group=14
▫  クラッシュリカバリを考慮すると⼤大きく割り当て
るのはよくないが、短時間のスパイクを処理理する
のには効果的。...
2015/03/26サバフェス!  2015 Spring
36
-rw-rw---- 1 mysql mysql 536870912 3⽉月  22 01:05 2015 ib_logfile0
-rw-rw---- 1 mysql mysq...
フラッシュ
•  innodb_flushing_avg_loops=1000
▫  ローカルベンチマーク(5分計測)で500tpm増えた。
•  innodb_max_dirty_pages_pct=90
▫  ローカルベンチマークで1500...
2015/03/26サバフェス!  2015 Spring
38
効果が無かったこと
•  XFS
•  EXT4のnobarrierオプション
•  クエリーキャッシュ
•  /etc/init.d/mysqlで起動前にベンチマーク⽤用の
ファイルコピーのキャッシュを解放するために
次のコマンドを挿⼊入して...
2015/03/26サバフェス!  2015 Spring
40
Upcoming SlideShare
Loading in …5
×

サバフェス! 2015 Spring LT資料

6,543 views

Published on

サバフェス! 2015 Spring LT資料

Published in: Software

サバフェス! 2015 Spring LT資料

  1. 1. サバフェス! 2015 Spring 2015-03-26 Lightning Talk @ttkzw 滝澤隆史 チーム名: zzz
  2. 2. 私は誰 •  ⽒氏名: 滝澤  隆史  @ttkzw •  所属: 株式会社ハートビーツ ▫  普段はサーバの構築や運⽤用をやっています。 •  チーム名: zzz ▫  メンバー: @ttkzw ⼀一⼈人チーム ▫  hubでギネスを飲みながらサバフェスの申し込み 画⾯面を⾒見見ていて、チーム名を考えていたら、間 違ってPOSTしてしまった。 ▫  開催⽇日近くにチーム名の⼀一覧が公開されるまで、 どのチーム名で申し込んだか思い出せなかった。 2 2015/03/26サバフェス!  2015 Spring
  3. 3. 注意事項 •  本資料料はIDCフロンティア様主催の「サバフェ ス!  2015 Spring」に特化した内容です。 ▫  https://2015spring.serverfesta.info/ •  ここで紹介したパラメータを参考にする場合は その内容を理理解した上でご利利⽤用ください。 •  環境や状況によって最適なパラメータは異異なり ますので、万が⼀一ここに書かれたパラメータを 適応して問題が起きたときても何も保証いたし ません。 2015/03/26サバフェス!  2015 Spring 3
  4. 4. 2015/03/26サバフェス!  2015 Spring 4
  5. 5. READMEに書いてあるパスワードが 実際のものと違ってログインできな かった。 2015/03/26サバフェス!  2015 Spring 5
  6. 6. ベンチマークが始まらなかった。 2015/03/26サバフェス!  2015 Spring 6 3⽉月6⽇日(⼟土)0:00〜~ アイドルマスター シンデレラガールズ が始まったのでTVを ⾒見見始めた。
  7. 7. やはりベンチマークが始まらなかった。 2015/03/26サバフェス!  2015 Spring 7 たぶん、深夜2:30頃
  8. 8. ⼼心が折れかかっていたが、 4⽇日⽬目にしてやっと1回だけ通った。 2015/03/26サバフェス!  2015 Spring 8 3⽉月8⽇日0時過ぎに実 ⾏行行したもの
  9. 9. その後、2回⽬目のベンチマークがとれ ないまま第1陣が終了了した。 2015/03/26サバフェス!  2015 Spring 9 終了了後の運営による計測 期間中に成功した ただ1回の計測
  10. 10. 「延⻑⾧長戦」では快適になりました。 運営の皆様、ありがとうございます。 2015/03/26サバフェス!  2015 Spring 10
  11. 11. 2015/03/26サバフェス!  2015 Spring 11
  12. 12. Percona 5.6 •  元々Perconaを採⽤用する予定だった。 ▫  Perconaは昔からioDrive向けの資料料を出していた のでよいスコアが出るのではと期待。 •  最初は基準値をとりたかったのでMySQL 5.6系 の標準的な設定を⾏行行い、ベンチマークを取ろう とした。 •  ベンチマークが通らなかったので、ローカル環 境で⾊色々調整。 •  3⽇日間経過したが、まったくベンチマークが通 らなかったので、Percona 5.6系にして実施。 2015/03/26サバフェス!  2015 Spring 12
  13. 13. 2015/03/26サバフェス!  2015 Spring 13
  14. 14. ⽅方針 •  可能な限りInnoDBバッファプールにメモリを割 り当てる。 ▫  キャッシュメモリを使わせない。 –  →Direct I/Oでがんばる •  無駄な処理理を⾏行行わせない。 •  フラッシュ処理理を調整 ▫  当初は⼩小まめに吐き出す⽅方針だったが、最後の⽅方 は如何に処理理のタイミングを遅らせるかになった。 •  ioDriveの気持ちになって考える。 •  InnoDBの気持ちになって考える。 2015/03/26サバフェス!  2015 Spring 14
  15. 15. 低レイヤーを攻めろ! ディスクI/O、ネットワークI/O、メモリ周り 2015/03/26サバフェス!  2015 Spring 15
  16. 16. OS周り: 不不要なものを無効化 •  SELinuxをdisabledにして不不要な処理理をバイパス。 ▫  /etc/sysconfig/selinux –  SELINUX=disabled •  不不要なサービスを停⽌止して、メモリを確保。 ▫  chkconfig postfix off ▫  chkconfig crond off ▫  chkconfig atd off ▫  chkconfig auditd off ▫  chkconfig abrtd off ▫  chkconfig iptables off ▫  chkconfig ip6tables off ▫  chkconfig rsyslog off 2015/03/26サバフェス!  2015 Spring 16
  17. 17. OS周り: パラメータチューニング •  /etc/sysctl.conf ▫  vm.swappiness = 0 ▫  vm.dirty_background_ratio = 5 ▫  vm.dirty_ratio = 10 ▫  net.core.wmem_default = 1048576 ▫  net.core.rmem_default = 1048576 ▫  net.core.wmem_max = 4194304 ▫  net.core.rmem_max = 4194304 ▫  net.ipv4.tcp_mem = 6291456 6291456 6291456 ▫  net.ipv4.tcp_wmem = 4096 1048576 4194304 ▫  net.ipv4.tcp_rmem = 4096 1048576 4194304 2015/03/26サバフェス!  2015 Spring 17
  18. 18. OS周り: ファイルシステム •  ファイルシステム ▫  EXT4を採⽤用。XFSを試したが悪化した。 •  マウントオプション ▫  noatime,nodiratime → atimeの更更新を抑制 ▫  discard → TRIMを使⽤用 ▫  nobarrier → 改善しなかったので不不採⽤用 2015/03/26サバフェス!  2015 Spring 18
  19. 19. ioDriveの設定 •  /etc/modprobe.d/iomemory-vsl.conf ▫  options iomemory-vsl use_workqueue=0 –  I/Oスケジューラーの処理理をバイパスさせる。 •  /etc/sysconfig/iomemory-vsl ▫  ENABLED=1 ▫  FIO_DRIVER_MOD_OPTS="use_workqueue=0" ▫  MOUNTS="/fioa" •  /etc/fstab ▫  /dev/fioa /fioa ext4 defaults,discard,noatime,nodiratime,noauto 0 0 –  noautoを付与 2015/03/26サバフェス!  2015 Spring 19
  20. 20. 2015/03/26サバフェス!  2015 Spring 20
  21. 21. my.cnf •  datadir=/fioa/mysql •  socket=/fioa/mysql/mysql.sock •  tmpdir=/fioa/tmp ▫  テンポラリテーブルなどをioDriveに •  user=mysql •  skip-name-resolve ▫  名前解決処理理を無効化 2015/03/26サバフェス!  2015 Spring 21
  22. 22. ネットワーク •  max_connections=40 ▫  tpcc_mysqlの-cが30なので、30+αに。 •  max_allowed_packet=4M ▫  デフォルト値のまま •  net_buffer_length=256K ▫  少し⼤大きめに 2015/03/26サバフェス!  2015 Spring 22 mysql> show global status like 'Byte%'; +----------------+-------------+ | Variable_name | Value | +----------------+-------------+ | Bytes_received | 2420522140 | | Bytes_sent | 12714377760 | +----------------+-------------+ 2 rows in set (0.00 sec)
  23. 23. NUMA •  flush_caches=ON (mysqld_safe) •  numa_interleave=ON (mysqld_safe) •  innodb_buffer_pool_populate=ON 2015/03/26サバフェス!  2015 Spring 23 ※ https://www.percona.com/doc/percona-server/5.6/performance/ innodb_numa_support.html
  24. 24. スレッドプールの利利⽤用 •  thread_handling=pool-of-threads •  thread_pool_size=64 2015/03/26サバフェス!  2015 Spring 24 ※ http://www.percona.com/doc/percona-server/5.6/performance/ threadpool.html
  25. 25. その他 •  performance_schema=OFF •  table_open_cache=1600 •  table_open_cache_instances=16 •  query_cache_type=0 •  query_cache_size=0 2015/03/26サバフェス!  2015 Spring 25 400あれば⼗十分なはず。 しかし、調整できてい ない。 | Open_files | 16 | | Open_streams | 0 | | Open_table_definitions | 76 | | Open_tables | 360 | | Opened_files | 149 | | Opened_table_definitions | 76 | | Opened_tables | 367 | | Table_open_cache_hits | 56660865 | | Table_open_cache_misses | 367 | | Table_open_cache_overflows | 0 | 更更新が多いので無効に。
  26. 26. 2015/03/26サバフェス!  2015 Spring 26
  27. 27. レギュレーション •  innodb_doublewrite •  innodb_flush_log_at_trx_commit=1 2015/03/26サバフェス!  2015 Spring 27
  28. 28. お約束 •  innodb_file_per_table 2015/03/26サバフェス!  2015 Spring 28
  29. 29. Direct I/O •  innodb_flush_method=ALL_O_DIRECT ▫  Percona, MariaDB向け •  innodb_log_block_size=4096 •  innodb_disable_sort_file_cache=ON 2015/03/26サバフェス!  2015 Spring 29 ※ http://www.percona.com/doc/percona-server/5.6/scalability/ innodb_io.html
  30. 30. バッファプール •  innodb_buffer_pool_size=28G ▫  SWAPが発⽣生するぎりぎりで、可能な限り割り当 てた。 •  innodb_buffer_pool_instances=8 ▫  デフォルト値が性能が出た。 2015/03/26サバフェス!  2015 Spring 30
  31. 31. I/Oスレッド •  innodb_write_io_threads=20 •  innodb_read_io_threads=20 2015/03/26サバフェス!  2015 Spring 31
  32. 32. フラッシュ •  innodb_flush_neighbors=0 •  innodb_adaptive_flushing=1 •  innodb_io_capacity=8000 •  innodb_io_capacity_max=9500 •  innodb_lru_scan_depth=2000 2015/03/26サバフェス!  2015 Spring 32 ここら辺の調整に⼀一 番時間がかかった。
  33. 33. 第1陣の中断時の設定はここまで •  約39000tpmくらい •  ここまでは正統的なチューニングかな。 •  もうちょい頑張っても1000〜~2000tpmくらい しか増えないかなと。 •  ということで、延⻑⾧長戦は⽅方針を転換 2015/03/26サバフェス!  2015 Spring 33
  34. 34. 2015/03/26サバフェス!  2015 Spring 34
  35. 35. ログ •  innodb_log_file_size=512M •  innodb_log_files_in_group=14 ▫  クラッシュリカバリを考慮すると⼤大きく割り当て るのはよくないが、短時間のスパイクを処理理する のには効果的。 ▫  ローカルベンチマークで5000tpm増えた。 2015/03/26サバフェス!  2015 Spring 35
  36. 36. 2015/03/26サバフェス!  2015 Spring 36 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 01:05 2015 ib_logfile0 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:52 2015 ib_logfile1 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:48 2015 ib_logfile10 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:48 2015 ib_logfile11 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:48 2015 ib_logfile12 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:48 2015 ib_logfile13 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:53 2015 ib_logfile2 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:55 2015 ib_logfile3 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:56 2015 ib_logfile4 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:58 2015 ib_logfile5 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 00:59 2015 ib_logfile6 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 01:01 2015 ib_logfile7 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 01:03 2015 ib_logfile8 -rw-rw---- 1 mysql mysql 536870912 3⽉月  22 01:03 2015 ib_logfile9 最⾼高スコアを出したときのベンチバーク後 のログファイルのタイムスタンプ
  37. 37. フラッシュ •  innodb_flushing_avg_loops=1000 ▫  ローカルベンチマーク(5分計測)で500tpm増えた。 •  innodb_max_dirty_pages_pct=90 ▫  ローカルベンチマークで1500tpm増えた。 2015/03/26サバフェス!  2015 Spring 37
  38. 38. 2015/03/26サバフェス!  2015 Spring 38
  39. 39. 効果が無かったこと •  XFS •  EXT4のnobarrierオプション •  クエリーキャッシュ •  /etc/init.d/mysqlで起動前にベンチマーク⽤用の ファイルコピーのキャッシュを解放するために 次のコマンドを挿⼊入してみたが効果が無かった。 ▫  sync; echo 3 > /proc/sys/vm/drop_caches 2015/03/26サバフェス!  2015 Spring 39
  40. 40. 2015/03/26サバフェス!  2015 Spring 40

×