amazon rdsを参考にしたとりまチューニング

31
Update 2010/7/21 Amazon RDSを参考にした とりまチューニング 2016/08/19 関西地区PostgreSQL勉強会 株式会社ロックオン 三原俊介 1

Upload: shunsuke-mihara

Post on 15-Apr-2017

1.703 views

Category:

Technology


20 download

TRANSCRIPT

Page 1: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

Amazon RDSを参考にした とりまチューニング

2016/08/19 関西地区PostgreSQL勉強会

株式会社ロックオン 三原俊介

1

Page 2: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

自己紹介

2

Page 3: Amazon RDSを参考にしたとりまチューニング

2012.04 株式会社ロックオン入社 インフラユニット

現在 マーケティングPF 開発部

主にインフラ全般、開発環境の改善、 ロックオフの管理人などなどやってます

三原 俊介– Shunsuke Mihara

自己紹介 3

Page 4: Amazon RDSを参考にしたとりまチューニング

始める前のアンケート 4

質問: みなさんDBのチューニング経験はありますか

1. PostgreSQLを使ったことがある方

2. PostgreSQLのチューニングをしたことがある方

3. MySQLを使ったことがある方

4. MySQLのチューニングをしたことがある方

Page 5: Amazon RDSを参考にしたとりまチューニング

今回のテーマ 5

DBの初期構築時に

最低限調整しておきたいパラメータ

目次

1. チューニングの必要性 と とりまチューニング

2. Amazon RDS

3. PostgreSQLのとりまチューニング

4. (おまけ) MySQLのとりまチューニング

Page 6: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

チューニングの必要性 と とりまチューニング

6

Page 7: Amazon RDSを参考にしたとりまチューニング

チューニングの必要性 7

そもそもDBの構築直後(実装フェイズ前)に

チューニングは必要ない

1. 性能改善は欲を出せばキリがない

達成するべき目標値が決まった上で、どうやれ

ば達成できるかボトルネックを考慮して実施

2. 基準となるDBのアクセス傾向が必要

Page 8: Amazon RDSを参考にしたとりまチューニング

とりまチューニング 8

とはいえ、 DBのデフォルト値から

とりあえず、まあ変更した方が良い値はあります

なぜデフォルトが最適な初期値になっていないのか

1. 最低限のスペックで動作させるための値

2. 安全側に倒した値

3. 1,2の項目と連動させないと意味が無い値

では、何を基準としてとりまチューニングを行うか

Page 9: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

Amazon RDS

9

Page 10: Amazon RDSを参考にしたとりまチューニング

AWSのRDBサービス Amazon RDS 10

Amazon RDSのデフォルト値を

とりまチューニングの参考にします

1. デフォルトでチューニング済みの設定で起動

2. RDSのスペックに合わせて動的に設定

3. 世の中で広く使われているDB設定

[注意] RDSのデフォルトパラメータは、Linuxの

DB専用サーバを想定したパラメータ WEBとの同居やWindowサーバ

だと適切ではない場合がある

Page 11: Amazon RDSを参考にしたとりまチューニング

とりまチューニング項目の調査観点 11

「スペックに連動する値」と

「DBデフォルトの値との差分」に着目

スペックの違うRDS2台を比較

→ どの値はスペックに合わせて変更するべきか

RDSとオンプレにインストールしたDBを比較

→ どの値はスペックに関わらず変更するべきか

Page 12: Amazon RDSを参考にしたとりまチューニング

とりまチューニング項目の調査方法 12

DB3台を用意し、パラメータを比較

1. インスタンスタイプ(スペック)の違うRDSを2

台起動

2. オンプレに同バージョンのDBをインストール

3. DBに入り設定値を取得

A) PostgreSQLならば「SHOW ALL;」

B) MySQLならば「SHOW VARIABLES;」

Page 13: Amazon RDSを参考にしたとりまチューニング

13 比較表を作成して確認

Page 14: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

PostgreSQLのとりまチューニング

14

Page 15: Amazon RDSを参考にしたとりまチューニング

RDSのPostgreSQL 9.5.2 設定 15

スペックと連動する値 4項目

DBデフォルト値と差分がある値 53項目

全パラメータ238項目中

1. スペックと連動する値

shared_buffers, effective_cache_size, max_connections, wal_buffers

2. DBデフォルト値と差分がある値

※53項目は多いので以下に絞ってご紹介

autovacuum系, チェックポイント系, 多言語対応系

Page 16: Amazon RDSを参考にしたとりまチューニング

shared_buffers 16

shared_buffersはサーバメモリの1/4

■shared_buffersとは

データベースサーバが使用する共有メモリバッファ

のために使用するメモリ量

公式ドキュメントにも25%(1/4)が

良いよと書いてある

Page 17: Amazon RDSを参考にしたとりまチューニング

effective_cache_size 17

effective_cache_sizeはサーバメモリの1/2

■effective_cache_sizeとは

プランナーがインデックススキャンかシーケンシャ

ルスキャンかの判断に利用する参考値

PostgreSQL wiki

にも全メモリの1/2が保守的な設定と記載

Page 18: Amazon RDSを参考にしたとりまチューニング

max_connectionsとwal_buffers 18

max_connectionsはサーバメモリ128KB毎1増加

wal_buffersはデフォルト設定で自動調整

■max_connectionsとは

DBへの同時コネクション数の最大

■wal_bufferとは

トランザクションログを書き出すバッファ

デフォルトの自動設定でshared_buffersの1/32

Page 19: Amazon RDSを参考にしたとりまチューニング

autovacuum系 19

analyzeとvacuumが頻度良く発生するように

トリガーとなる値を半分に調整

■ autovacuum_naptime 60 → 30

autovacuumを起動する間隔を秒単位で指定

■ autovacuum_analyze_scale_factor 0.1 → 0.05

ANALYZEを起動するトリガとなる更新行数の割合

■ autovacuum_vacuum_scale_factor 0.2 → 0.1

VACUUMを起動するトリガとなる更新行数の割合

Page 20: Amazon RDSを参考にしたとりまチューニング

チェックポイント系 20

チェックポイントの書き出し処理を分散し、

負荷を減らすように調整(リカバリ時間は増加)

■ チェックポイントとは

PostgreSQLの共有バッファとディスク間の整合性

を取る処理

Update ○ Insert △ ・・・・

同期

(チェックポイント)

Page 21: Amazon RDSを参考にしたとりまチューニング

チェックポイント系 21

チェックポイントの書き出し処理を分散し、

負荷を減らすように調整(リカバリ時間は増加)

■ checkpoint_completion_target 0.5 → 0.9

チェックポイントの書き出し処理が、この値の割合に

なるように調整されて、チェックポイントが実行

■ max_wal_size 1GB → 2GB

■ min_wal_size 80MB → 256MB

※9.5でcheckpoint_segmentsの代わりに導入

Page 22: Amazon RDSを参考にしたとりまチューニング

多言語対応系 22

マルチバイト文字を扱いやすいように設定

■ lc_collate C → en_US.UTF-8

■ lc_ctype C → en_US.UTF-8

DB作成時の多言語対応のベースになる値

※ DB作成後変更できない値のためハマりやすい

日本での利用の場合、とりま「jp_JP.UTF-8」で

Page 23: Amazon RDSを参考にしたとりまチューニング

PostgreSQLのとりまチューニング まとめ 23

RDSでデフォルトでチューニングされているもの

1. shared_buffersはサーバメモリの1/4

2. effective_cache_sizeはサーバメモリの1/2

3. max_connectionsはサーバメモリ128kB毎1増加

4. wal_buffersはデフォルト設定で自動調整

5. autovacuumはトリガーとなる値を半分に調整

6. チェックポイントの書き出し処理を分散

7. マルチバイト文字を扱いやすいように設定

Page 24: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

(おまけ)MySQLのとりまチューニング

24

Page 25: Amazon RDSを参考にしたとりまチューニング

RDSのMySQL 5.6.27 設定 25

スペックと連動する値 5項目

DBデフォルトとの値の差分 83項目

全パラメータ455項目中

1. スペックと連動する値

innodb_buffer_pool_size, max_connections,

back_log, host_cache_size, thread_cache_size

2. デフォルトとの差分

※今回は省略

Page 26: Amazon RDSを参考にしたとりまチューニング

innodb_buffer_pool_size 26

innodb_buffer_pool_sizeはサーバメモリの3/4

■ innodb_buffer_pool_sizeとは

InnoDBのバッファープールのサイズ

公式ドキュメントには、特に良い値について言及

は無し

Page 27: Amazon RDSを参考にしたとりまチューニング

max_connections 27

max_connectionsはサーバメモリ1.5MB毎1増加

■max_connectionsとは

DBへの同時コネクション数の最大

(PostgreSQL の 128KB毎より大きい)

Page 28: Amazon RDSを参考にしたとりまチューニング

ほかのパラメータ 28

残りの3パラメータは、RDSのインスタンスタイプ

にひもづくパラメータがあるらしくロジックが不明

db.t2.micro VCPU1 メモリ1GiB

db.t2.medium VCPU2 メモリ4GiB

back_log 63 112

host_cache_size 194 440

thread_cache_size 66 312

自サーバとほぼ同じスペックのRDSを立てて

パラメータを確認するのが良いのでは?

Page 29: Amazon RDSを参考にしたとりまチューニング

MySQLのとりまチューニング まとめ 29

RDSでデフォルトでチューニングされているもの

1. innodb_buffer_pool_sizeはサーバメモリの3/4

2. max_connectionsはサーバメモリ1.5MB毎1増加

3. その他パラメータは、同じくらいのRDSを立てて値

を確認する

Page 30: Amazon RDSを参考にしたとりまチューニング

Update 2010/7/21

まとめ

30

Page 31: Amazon RDSを参考にしたとりまチューニング

RDSを参考にしたとりまチューニングをご紹介

まとめ 31

あくまでとりまチューニング

デフォルト設定よりマシな環境を作るのが目的

チューニングは、目標数値をもって実施するべき

DB毎にチューニングの定石を紹介したサイトは多

くあるので、RDS以外にも参考にしてください