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

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

Embed Size (px)

Citation preview

Copyright IDC Frontier Inc. All rights reserved.

1

db tech showcase Tokyo 2015

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

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

IDCフロンティア

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

@tafujish

2015年06月10日

D17:MySQL/Flash

(C) IDC Frontier Inc. All Rights Reserved.

自己紹介

■業務

クラウド前

Unix/Linuxシステム管理者

クラウド後

プラットフォームの

設計、構築、運用

テクニカルサポート

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

今ココ

■趣味

自宅サーバー/自宅HPC

ベンチマーク

(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 サービス提供開始

(C) IDC Frontier Inc. All Rights Reserved.

サービスポートフォリオ

Cloud

パブリッククラウド

プライベートクラウド

オブジェクトストレージ

RDBMS(提供予定)

ベアメタルサーバー

Network

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

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

ファイアウォール(WAF)

Bigdata DataCenter

Solution Service

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

Infrastructure

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

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

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

ハウジングサービス

インターネット接続

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

マネージドサービス

サーバー基礎構築

(C) IDC Frontier Inc. All Rights Reserved.

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

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

Highio.5XL128

ベアメタルサーバー

高速IO1000

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

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

仮想化による柔軟性

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

ioMemoryを直接操作

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

6 (C) IDC Frontier Inc. All Rights

Reserved.

サバフェス

(C) IDC Frontier Inc. All Rights Reserved.

http://serverfesta.info/

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

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

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

賞金・賞品あり

第1回 2013年秋 CMS (Wordpress)

第2回 2015年春 DB (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

(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

10 (C) IDC Frontier Inc. All Rights

Reserved.

上位入賞者の設定

やってみた

(C) IDC Frontier Inc. All Rights Reserved.

お約束

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

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

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

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

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

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

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

(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クラウド ベアメタルサーバーの場合は提供時に設定済み

13 (C) IDC Frontier Inc. All Rights

Reserved.

MySQL

MariaDB

PerconaServer

どれにする

(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

(C) IDC Frontier Inc. All Rights Reserved.

MySQL / MariaDB / PerconaServer

Percona 61%

Maria 28%

MySQL 11%

Percona 100%

最終スコアが取れた

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

サバフェスでの利用状況

→ 以降の検証はPerconaServerを選択

16 (C) IDC Frontier Inc. All Rights

Reserved.

まずは

ioMemoryの性能を見てほしい

(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

(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 (公式バイナリ)

19 (C) IDC Frontier Inc. All Rights

Reserved.

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

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

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

(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)

(C) IDC Frontier Inc. All Rights Reserved.

ファイルシステム

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

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

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

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

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

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

22 (C) IDC Frontier Inc. All Rights

Reserved.

Buffer pool innodb_buffer_pool_size

(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

(C) IDC Frontier Inc. All Rights Reserved.

innodb_buffer_pool_size

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

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

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

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

(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

(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

(C) IDC Frontier Inc. All Rights Reserved.

I/Oとフラッシュ

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

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

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

29 (C) IDC Frontier Inc. All Rights

Reserved.

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

(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

(C) IDC Frontier Inc. All Rights Reserved.

ログのブロックサイズ

ioMemory 512Byte

ファイルシステム 4KByte

ioMemory 4KByte

ファイルシステム 4KByte

MySQL Log 4KByte

I/O

MySQL Log 4KByte

I/O

(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

(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

34 (C) IDC Frontier Inc. All Rights

Reserved.

その他 innodb_checksum_algorithm=crc32

(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

(C) IDC Frontier Inc. All Rights Reserved.

その他

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

(C) IDC Frontier Inc. All Rights Reserved.

まとめ

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

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

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

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

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

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

- Percona/MariaDB用のパラメータ

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

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

38

(C) IDC Frontier Inc. All Rights Reserved.