Top Banner
Copyright IDC Frontier Inc. All rights reserved. 1 db tech showcase Tokyo 2015 サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます IDCフロンティア ソリューションアーキテクト 藤城 拓哉 @tafujish 2015年06月10日 D17:MySQL/Flash
38

サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます

Jul 31, 2015

Download

Internet

IDC Frontier
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

Copyright IDC Frontier Inc. All rights reserved.

1

db tech showcase Tokyo 2015

サバフェス上位入賞者にみるioMemory×MySQL

最新チューニング教えます

IDCフロンティア

ソリューションアーキテクト 藤城 拓哉

@tafujish

2015年06月10日

D17:MySQL/Flash

Page 2: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

自己紹介

■業務

クラウド前

Unix/Linuxシステム管理者

クラウド後

プラットフォームの

設計、構築、運用

テクニカルサポート

ソリューションアーキテクト

今ココ

■趣味

自宅サーバー/自宅HPC

ベンチマーク

Page 3: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

インフラのすべてが揃うIDCフロンティア

Yahoo! JAPANのグループ企業であるIDCフロンティアは、 クラウドサービス(IaaS)、データ分析プラットフォーム、データセンター、高速・大容量ネットワークを軸としたITインフラを提供しています。

Cloud Service Bigdata Datacenter Network

2013年1月 ioMemory ioDrive2 サービス提供開始

2014年11月 ioMemory PX600 サービス提供開始

Page 4: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

サービスポートフォリオ

Cloud

パブリッククラウド

プライベートクラウド

オブジェクトストレージ

RDBMS(提供予定)

ベアメタルサーバー

Network

ファイアウォール コンテンツキャッシュ マネージドGSLB

不正侵入検知/防御サービス DDoS対策サービス ウェブアプリケーション

ファイアウォール(WAF)

Bigdata DataCenter

Solution Service

ハイパフォーマンスデザインパック

Infrastructure

首都圏、福島、大阪、北九州の全国9か所のデータセンターインフラ

総容量330Gbpsの高速・大容量バックボーンネットワークインフラ

Yahoo!ビッグデータインサイト

ハウジングサービス

インターネット接続

オンサイト運用アウトソーシング

マネージドサービス

サーバー基礎構築

Page 5: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

IDCFのioMemory搭載サービス 選べる2タイプ

ハードウェア専有仮想マシン

Highio.5XL128

ベアメタルサーバー

高速IO1000

ポータル上から作成し即時利用

時間従量で1時間から利用

仮想化による柔軟性

オーバーヘッド無しのフル性能

ioMemoryを直接操作

メモリサイズをカスタマイズ

Page 6: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

6 (C) IDC Frontier Inc. All Rights

Reserved.

サバフェス

Page 7: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

http://serverfesta.info/

ベンチマークやチューニングを肴にするサーバー好きのための祭り

チューニングによるベンチマークスコアを競い合う

チューニング結果はオープンに

賞金・賞品あり

第1回 2013年秋 CMS (Wordpress)

第2回 2015年春 DB (MySQL)

サバフェス(サーバーの方)

Page 8: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

サバフェス2015 Spring とは何だったのか

tpcc-mysql -w warehouses 1000

-c connections 30

-r warmup_time 0

-l running_time 900

-i report_interval 60

→出力結果のTpmCで順位づけ

tpcc-mysql

サバフェスシステム 競技用サーバー(チーム毎)

MySQL/MariaDB/Percona

5.5系/5.6系

ioDrive2 MLC 365GB

MySQL設定縛り

innodb_doublewrite innodb_flush_log_at_trx_commit = 1

IDCFベアメタルサーバー高速IO365

Page 9: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

サバフェス 情報まとめ

Twitter

https://twitter.com/#サバフェス

Togetter:サバフェス2015 Spring表彰式(2015/3/26)

http://togetter.com/li/800168

1位の方 @ttkzwさん

http://www.slideshare.net/ttkzw/svfes2

2位の方 @mapk0yさん

http://mapk0y.hatenablog.com/entry/2015/04/13/090915

3位の方 @i_rethiさん

http://www.slideshare.net/hiroi10/lt-46409689

Page 10: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

10 (C) IDC Frontier Inc. All Rights

Reserved.

上位入賞者の設定

やってみた

Page 11: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

お約束

以降の設定は、今回の環境、今回のベンチマーク内容での結果です

今回の設定を、未検証でそのまま入れないように

念のため、内容の把握と事前の検証をしてください

ハードウェア環境は、サバフェス時と異なります(ioMemoryが新しい)

結果や効果が変わる場合があります

サバフェス時は15分間の戦いでしたが、今回は1時間計測しています

以降の計測は、1回のみです(数%の誤差はあります)

Page 12: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

ハードウェア / BIOS

IDCFクラウド ベアメタルサーバー 高速IO1000

HP ProLiant DL360p Gen8

Intel Xeon E5-2650v2 (@2.6GHz, 8コア) ×2

メモリ 32GB (8GB DIMM ×4)

SAS 1.5kRPM HDD ×4 RAID10 + RAIDキャッシュ1GB

ioMemory PX600 1TB (VSL 4.0.2)

CentOS 6.4 (2.6.32-431.el6.x86_64)

■BIOS設定

サーバー/CPU/DIMMの省電力系の設定 → 性能優先/最大性能

(HPのサーバー:協調電力コントロール → 無効)

ハイパースレッディング → 有効

IDCFクラウド ベアメタルサーバーの場合は提供時に設定済み

Page 13: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

13 (C) IDC Frontier Inc. All Rights

Reserved.

MySQL

MariaDB

PerconaServer

どれにする

Page 14: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

MySQL / MariaDB / PerconaServer

0

2000

4000

6000

8000

10000

12000

14000

16000

18000

60

12

0

18

0

24

0

30

0

36

0

42

0

48

0

54

0

60

0

66

0

72

0

78

0

84

0

90

00

5000

10000

15000

20000

25000

30000

35000

40000

60

12

0

18

0

24

0

30

0

36

0

42

0

48

0

54

0

60

0

66

0

72

0

78

0

84

0

90

0

1位 Percona (9758TpmC)

2位 MariaDB (9524TpmC)

3位 MySQL (8201TpmC)

1位 Percona (26250TpmC)

2位 MySQL (24818TpmC)

3位 MariaDB (23532TpmC)

Transactions / min Transactions / min

innodb_buffer_pool_sizeのみ設定 I/O関連の設定を付与

※設定、バージョンはこちら http://www.slideshare.net/tafujish/lt-2-46342987

↑ 15min

↑ 15min

Page 15: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

MySQL / MariaDB / PerconaServer

Percona 61%

Maria 28%

MySQL 11%

Percona 100%

最終スコアが取れた

36チーム中 入賞6チーム中

サバフェスでの利用状況

→ 以降の検証はPerconaServerを選択

Page 16: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

16 (C) IDC Frontier Inc. All Rights

Reserved.

まずは

ioMemoryの性能を見てほしい

Page 17: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

HDD vs ioMemory

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

ローカルHDD (1086TpmC)

ioMemory (21119TpmC)

ioMemory + チューニング (43581TpmC)

Transactions / min.

↑ 60min

Page 18: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

ベースのmy.cnf

skip-name-resolve

max_connections = 100

thread_cache_size = 100

innodb_buffer_pool_size = 20G

ローカルHDD

ioMemory ioMemory + チューニング

skip-name-resolve

max_connections = 100

thread_cache_size = 100

innodb_buffer_pool_size = 20G

innodb_flush_method = O_DIRECT

innodb_write_io_threads = 16

innodb_read_io_threads = 8

innodb_io_capacity = 10000

innodb_log_file_size = 2G

innodb_max_dirty_pages_pct = 60

innodb_adaptive_flushing = 1

innodb_log_files_in_group = 2

innodb_thread_concurrency = 0

innodb_purge_threads = 1

5.6では

デフォルト値

“MySQL-Fusion-io Best Practices Guide” より

Percona-Server 5.6.23 (公式バイナリ)

Page 19: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

19 (C) IDC Frontier Inc. All Rights

Reserved.

ファイルシステム EXT4 (mkfs.ext4 /dev/fioa)

XFS (mkfs.xfs -s size=4096 -b size=4096 /dev/fioa)

※マウントオプションはデフォルト

Page 20: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

EXT4 vs XFS

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Transactions / min.

↑ 60min

EXT4 (43581TpmC)

XFS (43558TpmC)

Page 21: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

ファイルシステム

短時間での計測ならEXT4の方が高速だったが、

数十分以降はXFSの方が高速

→ 無理にどちらか選ぶ必要は無さそう

マウントオプションは、nobarrierとnoatimeが定番

→ 今回、有意な差が出なかったので省略

※以降はXFSで実施してます

Page 22: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

22 (C) IDC Frontier Inc. All Rights

Reserved.

Buffer pool innodb_buffer_pool_size

Page 23: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

0

10000

20000

30000

40000

50000

60000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

innodb_buffer_pool_size

20G

28G

24G

16G

Transactions / min.

↑ 60min

Page 24: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

innodb_buffer_pool_size

ioMemoryにより高速なI/Oでも結局はメモリが重要

VSL(ioMemoryのドライバ)もメモリを消費する

→ ここでは余裕をもって20G

Page 25: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

25 (C) IDC Frontier Inc. All Rights

Reserved.

I/Oとフラッシュ innodb_io_capacity

innodb_io_capacity_max

innodb_lru_scan_depth

innodb_buffer_pool_instances

innodb_flush_neighbors

Page 26: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

I/Oとフラッシュ

innodb_io_capacity=8000 innodb_io_capacity_max=9500 innodb_lru_scan_depth=2000

innodb_io_capacity=15000 innodb_io_capacity_max=15000 innodb_lru_scan_depth=1500 innodb_buffer_pool_instances=12

innodb_io_capacity=10000

Transactions / min.

↑ 60min

Page 27: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

I/Oとフラッシュ

innodb_flush_neighbors=0

innodb_flush_neighbors=1(デフォルト)

Transactions / min.

↑ 60min

Page 28: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

I/Oとフラッシュ

チューニングのポイントだけど、難しい・・・

→ ここは下手にいじらず innodb_io_capacity=10000 のみでも十分有効

innodb_flush_neighbors=0 は効果ありそうだが誤差の範囲か

Page 29: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

29 (C) IDC Frontier Inc. All Rights

Reserved.

ログのブロックサイズ innodb_log_block_size=4096

Page 30: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

ログのブロックサイズ

innodb_log_block_size=4096

デフォルト(512)

Transactions / min.

↑ 60min

Page 31: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

ログのブロックサイズ

ioMemory 512Byte

ファイルシステム 4KByte

ioMemory 4KByte

ファイルシステム 4KByte

MySQL Log 4KByte

I/O

MySQL Log 4KByte

I/O

Page 32: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

ログのブロックサイズ

innodb_log_block_size=4096 デフォルト(512)

Transactions / min.

↑ 60min

innodb_log_block_size=4096 + fio-format:4K

Page 33: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

ログのブロックサイズ

innodb_log_block_size=4096

ioMemoryのblock sizeを4Kにすると効果的

4KByteでフォーマットする

# fio-format –b 4K /dev/fct0

現在のブロックサイズを確認する

# fio-status –a | grep Format

Format: v500, 244140625 sectors of 4096 bytes

Format: 244140625 sectors of 4096 bytes

Page 34: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

34 (C) IDC Frontier Inc. All Rights

Reserved.

その他 innodb_checksum_algorithm=crc32

Page 35: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

その他

innodb_checksum_algorithm=crc32

デフォルト

Transactions / min.

↑ 60min

0

5000

10000

15000

20000

25000

30000

35000

40000

45000

50000

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59

Page 36: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

その他

使えそうだが、大きな効果は得られず

Page 37: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

(C) IDC Frontier Inc. All Rights Reserved.

まとめ

ioMemoryでは、これまで通りの定番の設定しておくだけ

細かいチューニングしなくても十分速いです

サバフェスの結果イコール、ファイルシステムは必ずしもEXT4が良いとは限らない

デフォルトのファイルシステムそのままでも十分

IOのサイズは、MySQLログ、ファイルシステム、ioMemoryそれぞれ合わせる

サバフェスのまとめサイトを参照いただき、他の設定も是非お試しください

- Percona/MariaDB用のパラメータ

- OS/ネットワークのチューニング

※これ以上の負荷だとネットワークがボトルネックになる

Page 38: サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます

38

(C) IDC Frontier Inc. All Rights Reserved.