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

36 views

Published on

2016年08月関西地区PostgreSQL勉強会(初心者向け)での発表資料
https://jpug-kansai.doorkeeper.jp/events/50234

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
36
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Update 2010/7/21 Amazon RDSを参考にした とりまチューニング 2016/08/19 関西地区PostgreSQL勉強会 株式会社ロックオン 三原俊介 1
  2. 2. Update 2010/7/21 自己紹介 2
  3. 3. 2012.04 株式会社ロックオン入社 インフラユニット 現在 マーケティングPF 開発部 主にインフラ全般、開発環境の改善、 ロックオフの管理人などなどやってます 三原 俊介– Shunsuke Mihara 自己紹介3
  4. 4. 始める前のアンケート4 質問: みなさんDBのチューニング経験はありますか 1. PostgreSQLを使ったことがある方 2. PostgreSQLのチューニングをしたことがある方 3. MySQLを使ったことがある方 4. MySQLのチューニングをしたことがある方
  5. 5. 今回のテーマ5 DBの初期構築時に 最低限調整しておきたいパラメータ 目次 1. チューニングの必要性 と とりまチューニング 2. Amazon RDS 3. PostgreSQLのとりまチューニング 4. (おまけ) MySQLのとりまチューニング
  6. 6. Update 2010/7/21 チューニングの必要性 と とりまチューニング 6
  7. 7. チューニングの必要性7 そもそもDBの構築直後(実装フェイズ前)に チューニングは必要ない 1. 性能改善は欲を出せばキリがない 達成するべき目標値が決まった上で、どうやれ ば達成できるかボトルネックを考慮して実施 2. 基準となるDBのアクセス傾向が必要
  8. 8. とりまチューニング8 とはいえ、 DBのデフォルト値から とりあえず、まあ変更した方が良い値はあります なぜデフォルトが最適な初期値になっていないのか 1. 最低限のスペックで動作させるための値 2. 安全側に倒した値 3. 1,2の項目と連動させないと意味が無い値 では、何を基準としてとりまチューニングを行うか
  9. 9. Update 2010/7/21 Amazon RDS 9
  10. 10. AWSのRDBサービス Amazon RDS10 Amazon RDSのデフォルト値を とりまチューニングの参考にします 1. デフォルトでチューニング済みの設定で起動 2. RDSのスペックに合わせて動的に設定 3. 世の中で広く使われているDB設定 [注意] RDSのデフォルトパラメータは、Linuxの DB専用サーバを想定したパラメータ WEBとの同居や Windowサーバ だと適切ではな い場合がある
  11. 11. とりまチューニング項目の調査観点11 「スペックに連動する値」と 「DBデフォルトの値との差分」に着目 スペックの違うRDS2台を比較 → どの値はスペックに合わせて変更するべきか RDSとオンプレにインストールしたDBを比較 → どの値はスペックに関わらず変更するべきか
  12. 12. とりまチューニング項目の調査方法12 DB3台を用意し、パラメータを比較 1. インスタンスタイプ(スペック)の違うRDSを2 台起動 2. オンプレに同バージョンのDBをインストール 3. DBに入り設定値を取得 A) PostgreSQLならば「SHOW ALL;」 B) MySQLならば「SHOW VARIABLES;」
  13. 13. 13 比較表を作成して確認
  14. 14. Update 2010/7/21 PostgreSQLのとりまチューニング 14
  15. 15. RDSのPostgreSQL 9.5.2 設定15 スペックと連動する値 4項目 DBデフォルト値と差分がある値 53項目 全パラメータ238項目中 1. スペックと連動する値 shared_buffers, effective_cache_size, max_connections, wal_buffers 2. DBデフォルト値と差分がある値 ※53項目は多いので以下に絞ってご紹介 autovacuum系, チェックポイント系, 多言語対応系
  16. 16. shared_buffers16 shared_buffersはサーバメモリの1/4 ■shared_buffersとは データベースサーバが使用する共有メモリバッファ のために使用するメモリ量 公式ドキュメント にも25%(1/4)が 良いよと書いて ある
  17. 17. effective_cache_size17 effective_cache_sizeはサーバメモリの1/2 ■effective_cache_sizeとは プランナーがインデックススキャンかシーケンシャ ルスキャンかの判断に利用する参考値 PostgreSQL wiki にも全メモリの 1/2が保守的な 設定と記載
  18. 18. max_connectionsとwal_buffers18 max_connectionsはサーバメモリ128KB毎1増加 wal_buffersはデフォルト設定で自動調整 ■max_connectionsとは DBへの同時コネクション数の最大 ■wal_bufferとは トランザクションログを書き出すバッファ デフォルトの自動設定でshared_buffersの1/32
  19. 19. 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を起動するトリガとなる更新行数の割合
  20. 20. チェックポイント系20 チェックポイントの書き出し処理を分散し、 負荷を減らすように調整(リカバリ時間は増加) ■ チェックポイントとは PostgreSQLの共有バッファとディスク間の整合性 を取る処理 Update ○ Insert △ ・・・・ 同期 (チェックポイント)
  21. 21. チェックポイント系21 チェックポイントの書き出し処理を分散し、 負荷を減らすように調整(リカバリ時間は増加) ■ checkpoint_completion_target 0.5 → 0.9 チェックポイントの書き出し処理が、この値の割合に なるように調整されて、チェックポイントが実行 ■ max_wal_size 1GB → 2GB ■ min_wal_size 80MB → 256MB ※9.5でcheckpoint_segmentsの代わりに導入
  22. 22. 多言語対応系22 マルチバイト文字を扱いやすいように設定 ■ lc_collate C → en_US.UTF-8 ■ lc_ctype C → en_US.UTF-8 DB作成時の多言語対応のベースになる値 ※ DB作成後変更できない値のためハマりやすい 日本での利用の場合、とりま「jp_JP.UTF-8」で
  23. 23. 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. マルチバイト文字を扱いやすいように設定
  24. 24. Update 2010/7/21 (おまけ)MySQLのとりまチューニング 24
  25. 25. 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. デフォルトとの差分 ※今回は省略
  26. 26. innodb_buffer_pool_size26 innodb_buffer_pool_sizeはサーバメモリの3/4 ■ innodb_buffer_pool_sizeとは InnoDBのバッファープールのサイズ 公式ドキュメント には、特に良い 値について言及 は無し
  27. 27. max_connections27 max_connectionsはサーバメモリ1.5MB毎1増加 ■max_connectionsとは DBへの同時コネクション数の最大 (PostgreSQL の 128KB毎より大きい)
  28. 28. ほかのパラメータ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を立てて パラメータを確認するのが良いのでは?
  29. 29. MySQLのとりまチューニング まとめ29 RDSでデフォルトでチューニングされているもの 1. innodb_buffer_pool_sizeはサーバメモリの3/4 2. max_connectionsはサーバメモリ1.5MB毎1増加 3. その他パラメータは、同じくらいのRDSを立てて値 を確認する
  30. 30. Update 2010/7/21 まとめ 30
  31. 31. RDSを参考にしたとりまチューニングをご紹介 まとめ31 あくまでとりまチューニング デフォルト設定よりマシな環境を作るのが目的 チューニングは、目標数値をもって実施するべき DB毎にチューニングの定石を紹介したサイトは多 くあるので、RDS以外にも参考にしてください

×