SlideShare a Scribd company logo
1 of 40
Download to read offline
サバフェス! 2015 Spring 2015-03-26
Lightning Talk
@ttkzw 滝澤隆史
チーム名: zzz
私は誰
•  ⽒氏名: 滝澤  隆史  @ttkzw
•  所属: 株式会社ハートビーツ
▫  普段はサーバの構築や運⽤用をやっています。
•  チーム名: zzz
▫  メンバー: @ttkzw ⼀一⼈人チーム
▫  hubでギネスを飲みながらサバフェスの申し込み
画⾯面を⾒見見ていて、チーム名を考えていたら、間
違ってPOSTしてしまった。
▫  開催⽇日近くにチーム名の⼀一覧が公開されるまで、
どのチーム名で申し込んだか思い出せなかった。
2
2015/03/26サバフェス!  2015 Spring
注意事項
•  本資料料はIDCフロンティア様主催の「サバフェ
ス!  2015 Spring」に特化した内容です。
▫  https://2015spring.serverfesta.info/
•  ここで紹介したパラメータを参考にする場合は
その内容を理理解した上でご利利⽤用ください。
•  環境や状況によって最適なパラメータは異異なり
ますので、万が⼀一ここに書かれたパラメータを
適応して問題が起きたときても何も保証いたし
ません。
2015/03/26サバフェス!  2015 Spring
3
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系
の標準的な設定を⾏行行い、ベンチマークを取ろう
とした。
•  ベンチマークが通らなかったので、ローカル環
境で⾊色々調整。
•  3⽇日間経過したが、まったくベンチマークが通
らなかったので、Percona 5.6系にして実施。
2015/03/26サバフェス!  2015 Spring
12
2015/03/26サバフェス!  2015 Spring
13
⽅方針
•  可能な限りInnoDBバッファプールにメモリを割
り当てる。
▫  キャッシュメモリを使わせない。
–  →Direct I/Oでがんばる
•  無駄な処理理を⾏行行わせない。
•  フラッシュ処理理を調整
▫  当初は⼩小まめに吐き出す⽅方針だったが、最後の⽅方
は如何に処理理のタイミングを遅らせるかになった。
•  ioDriveの気持ちになって考える。
•  InnoDBの気持ちになって考える。
2015/03/26サバフェス!  2015 Spring
14
低レイヤーを攻めろ!
ディスクI/O、ネットワークI/O、メモリ周り
2015/03/26サバフェス!  2015 Spring
15
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
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
OS周り: ファイルシステム
•  ファイルシステム
▫  EXT4を採⽤用。XFSを試したが悪化した。
•  マウントオプション
▫  noatime,nodiratime → atimeの更更新を抑制
▫  discard → TRIMを使⽤用
▫  nobarrier → 改善しなかったので不不採⽤用
2015/03/26サバフェス!  2015 Spring
18
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
2015/03/26サバフェス!  2015 Spring
20
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
ネットワーク
•  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)
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
スレッドプールの利利⽤用
•  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
その他
•  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 |
更更新が多いので無効に。
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_file_cache=ON
2015/03/26サバフェス!  2015 Spring
29
※ http://www.percona.com/doc/percona-server/5.6/scalability/
innodb_io.html
バッファプール
•  innodb_buffer_pool_size=28G
▫  SWAPが発⽣生するぎりぎりで、可能な限り割り当
てた。
•  innodb_buffer_pool_instances=8
▫  デフォルト値が性能が出た。
2015/03/26サバフェス!  2015 Spring
30
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
•  innodb_lru_scan_depth=2000
2015/03/26サバフェス!  2015 Spring
32
ここら辺の調整に⼀一
番時間がかかった。
第1陣の中断時の設定はここまで
•  約39000tpmくらい
•  ここまでは正統的なチューニングかな。
•  もうちょい頑張っても1000〜~2000tpmくらい
しか増えないかなと。
•  ということで、延⻑⾧長戦は⽅方針を転換
2015/03/26サバフェス!  2015 Spring
33
2015/03/26サバフェス!  2015 Spring
34
ログ
•  innodb_log_file_size=512M
•  innodb_log_files_in_group=14
▫  クラッシュリカバリを考慮すると⼤大きく割り当て
るのはよくないが、短時間のスパイクを処理理する
のには効果的。
▫  ローカルベンチマークで5000tpm増えた。
2015/03/26サバフェス!  2015 Spring
35
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
最⾼高スコアを出したときのベンチバーク後
のログファイルのタイムスタンプ
フラッシュ
•  innodb_flushing_avg_loops=1000
▫  ローカルベンチマーク(5分計測)で500tpm増えた。
•  innodb_max_dirty_pages_pct=90
▫  ローカルベンチマークで1500tpm増えた。
2015/03/26サバフェス!  2015 Spring
37
2015/03/26サバフェス!  2015 Spring
38
効果が無かったこと
•  XFS
•  EXT4のnobarrierオプション
•  クエリーキャッシュ
•  /etc/init.d/mysqlで起動前にベンチマーク⽤用の
ファイルコピーのキャッシュを解放するために
次のコマンドを挿⼊入してみたが効果が無かった。
▫  sync; echo 3 > /proc/sys/vm/drop_caches
2015/03/26サバフェス!  2015 Spring
39
2015/03/26サバフェス!  2015 Spring
40

More Related Content

More from Takashi Takizawa

Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Takashi Takizawa
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動Takashi Takizawa
 
#mailerstudy 02 メールと暗号 - SSL/TLS -
#mailerstudy 02 メールと暗号 - SSL/TLS -#mailerstudy 02 メールと暗号 - SSL/TLS -
#mailerstudy 02 メールと暗号 - SSL/TLS -Takashi Takizawa
 
#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)Takashi Takizawa
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門Takashi Takizawa
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)Takashi Takizawa
 
Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Takashi Takizawa
 
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証Takashi Takizawa
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門Takashi Takizawa
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史Takashi Takizawa
 
#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介Takashi Takizawa
 
hbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassinhbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassinTakashi Takizawa
 

More from Takashi Takizawa (16)

Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
Unbound/NSD最新情報(OSC 2013 Tokyo/Spring)
 
RFCについての復習
RFCについての復習RFCについての復習
RFCについての復習
 
DNS RFC系統図
DNS RFC系統図DNS RFC系統図
DNS RFC系統図
 
DNSのRFCの歩き方
DNSのRFCの歩き方DNSのRFCの歩き方
DNSのRFCの歩き方
 
initとプロセス再起動
initとプロセス再起動initとプロセス再起動
initとプロセス再起動
 
#mailerstudy 02 メールと暗号 - SSL/TLS -
#mailerstudy 02 メールと暗号 - SSL/TLS -#mailerstudy 02 メールと暗号 - SSL/TLS -
#mailerstudy 02 メールと暗号 - SSL/TLS -
 
#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)#mailerstudy 02 暗号入門 (2012-02-22更新)
#mailerstudy 02 暗号入門 (2012-02-22更新)
 
#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門#logstudy 01 rsyslog入門
#logstudy 01 rsyslog入門
 
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)UnboundとDNSSEC(OSC2011 Tokyo/Spring)
UnboundとDNSSEC(OSC2011 Tokyo/Spring)
 
Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)Unboundの最適化(OSC2011 Tokyo/Spring)
Unboundの最適化(OSC2011 Tokyo/Spring)
 
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
qpstudy08 lsyncdによる共有ファイルシステムっぽい何かの検証
 
#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門#mailerstudy 01 LT POP/IMAP入門
#mailerstudy 01 LT POP/IMAP入門
 
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
 
DNS再入門
DNS再入門DNS再入門
DNS再入門
 
#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介#dnstudy 01 Unboundの紹介
#dnstudy 01 Unboundの紹介
 
hbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassinhbstudy20100821 SpamAssassin
hbstudy20100821 SpamAssassin
 

サバフェス! 2015 Spring LT資料