狠狠撸

狠狠撸Share a Scribd company logo
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
PostgreSQL安定運用のご提案
コンサルティング事業部
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
PostgreSQLで起こる問題
起こる問題
? 性能障害
? 領域障害
? データベース異常(データ破損等による)
システム監視を行っていない場合の問題
? 対策の遅れによるダウンタイムの増加
? 場当たり的な対応しかできない
? 的確な判断ができない
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
安定運用に必要なこと
システム監視を行っていれば
? 障害によるダウンタイムを最小に抑えることができる
? システムの問題を予測し未然に対処することができる
? ハードウェア投資の適切な判断ができる
監視ツール
OS情報 : オープンソースのZabbixなど
? 領域障害 → Zabbix : 容量監視
? データベース異常 → Zabbix : ログ監視、プロセス監視
? 性能障害 → Zabbix : CPU使用率、使用メモリ、DiskI/Oの稼働状況
ただし、OS上の情報だけでは、PostgreSQLの性能障害までは対処できない。
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
安定運用に必要なこと
システム監視を行っていれば
? 障害によるダウンタイムを最小に抑えることができる
? システムの問題を予測し未然に対処することができる
? ハードウェア投資の適切な判断ができる
監視ツール
OS情報 : オープンソースのZabbixなど
DB情報 : pgBadger
? 領域障害 → Zabbix : 容量監視
? データベース異常 → Zabbix : ログ監視、プロセス監視
? 性能障害 → Zabbix : CPU使用率、使用メモリ、DiskI/Oの稼働状況
pgBadger : DBの稼働状況
OSだけでなく、DBの稼働状況も監視することで、安定運用が可能になる
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
解析情報取得
pgBadgerとは、PostgreSQLのログファイルから、詳細なレポートを得るためのログアナライザです。
(Badger(バジャー)とは英語でアナグマのこと。fouine, pgFouine(ログ解析ツール)もイタチ科の動物が由来)
pgBadgerで解析PostgreSQL のログファイル
(ex. postgresql-2017-12-10_040000.log)
性能障害(pgBadgerで解決!)
性能分析ツール導入時のよくある問題点
?初期設定が難しく、手間がかかる
?追加で何かをインストールした場合の影響が不安
設定(お客様環境)が簡単
PostgreSQLのログ出力設定のみ
(追加で何かをインストールする必要なし)
ログの解析は別端末で可能
pgBadgerによるログの解析は別端末で実施可能
pgBadgerの場合
ログ分析の問題点
PostgreSQLでは1ログファイルにスロークエリやその
他、エラー、稼働情報等が出力される
→ 情報の集計、解析に時間と手間がかかる
迅速に問題を特定し、障害によるダウンタイムを最小化
①PostgreSQLのログを静的なHTML形式ファイルに変換
②SQLを負荷の高い順にランキング表示
③条件が異なるだけのSQLを1つのSQLとして集計
④時系列に問題のクエリを特定
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
取得可能な稼働情報
大項目 小項目 出力形式 単位
クエリ情報
合計実行回数 タイムチャート クエリ
最多実行回数 タイムチャート クエリ
合計実行時間 タイムチャート クエリ
最長実行時間 タイムチャート クエリ
使用状況
コネクション数 タイムチャート 合計、データベース別、ユーザ別、接続元IP別
セッション数 タイムチャート 合計、データベース別、ユーザ別、接続元IP別、アプリケーション別
チェックポイント情報 タイムチャート buffers, file数
一時ファイル使用状況 タイムチャート size, file数
バキューム関連情報
バキューム実行数 タイムチャート 回数、テーブル別
自動バキューム実行数 タイムチャート 回数、テーブル別
ロック
最多待ち回数とクエリ 一覧 クエリ
最長待ち時間とクエリ 一覧 クエリ
合計ロック数
ロック種別割合
円グラフ 回数
ログの出力状況
各ログ種別の出力割合 円グラフ ログ種別
各イベントレベルの出力数 タイムチャート、イベント一覧 イベントレベル(PANIC,FATAILE,ERROR,WARNING)
性能障害(pgBadgerで解決!)
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
pgBadgerの機能(タイムチャート)
稼働状況を可視化して
システムの傾向をつかむ
クエリ実行数が多い
実行時間の長いクエリが多い
I/O状況
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
pgBadgerの機能(問題のクエリ)
改善の必要があるクエリを特定
? クエリ実行時間のヒストグラム
? 合計実行時間(実行時間×実行回数)の長いクエリ
? 遅延SQL TopN(Normalized ※1)
? 遅延SQL TopN(個別)
ワーストクエリを確認後、時系列で分析
※1 Normalized : 条件が異なるだけのSQLを1つのSQLとして集計
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
pgBadgerの利用イメージ
利用ケース
特定時間帯の処理が遅くてクレームが入る
1. OS状況確認
CPU使用率
ディスクI/O(レスポンス)
メモリ使用状況
ディスクI/O,メモリは問題ないが
CPUの使用率が高い時間帯がある
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
pgBadgerの利用イメージ2
①クエリ実行数は増加しているわけではない
②合計実行時間の長いSQL確認
③時系列でクエリの実行状況を確認
問題のクエリをEXPLANコマンドで解析
原因
バッファキャッシュに対するIOが多いためCPU負荷が高い
チューニング案
インデックスの作成
インデックスを使用するようにクエリの書き換え
2. pgBadgerでドリルダウン
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
ITIで提供可能なサービス
?リモート分析サービス
?SQLチューニング支援
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
リモート分析サービスのメリット
ツール利用時のよくある問題点
専門のエンジニアがいないので
問題は分かったがどう対処すればいいかが分からない
SQLチューニングの知識があまりない
ツール利用時のよくある問題
メモリ
I/O
CPU
クエリ
ロック
?
? ?
?何をチューニングする?
?チューニングの優先順位は??ツールでシステムの状況は把握 でも
リモート分析サービスなら
①専門エンジニアとpgBadgerの情報により、素早い対応が可能
②PostgreSQLのログを弊社に送付頂くことでリモートでの問題解析が可能
③原則リモートサイトでの対応なのでスピードとコスト削減を両立
DB
使用状況
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
リモートで分析の場合
②ログを圧縮
リモート分析の流れ
PostgreSQLのログ取得から、分析結果を報告するまでの流れは下記の通りです。
~弊社環境~
⑤pgBadgerでデータ分析
④データを弊社環境に展開
~お客様環境~
ログ取得設定によりPostgreSQLのログが自動出力
※設定項目は次ページ参照
①ログ取得
⑥問題分析結果のご報告
圧縮ファイル
ローカルで分析の場合
②ログをpgBadgerで解析
③メールなどにより弊社へデータ送付
圧縮ファイル
DB専門エンジニアが
オンサイト作業なしに分析!!
ローカルで、必要な時
に参照する事も可能
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
Appendix(potgresql.conf設定)
pgBadgerでのログ分析を行うため、「postgresql.conf」に下記の設定が必要です。
設定後は下記のコマンドで設定内容を再読み込みさせます。
service postgresql reload
※「logging_collector」の変更の反映するにはDBの再起動が必要です
設定値 説明 設定時のOS再起動の必要の有無
logging_collector = on
標準エラー(stderr)またはCSV書式のログ出力に送られるメッ
セージを取り出し、ログファイルにリダイレクトするか否かを
on/offで設定
必要
log_min_duration_statement = 3s
クエリの実行時間が指定した時間以上であったら、クエリのテ
キストと実行時間をログに残す
閾値は要検討
superuser
log_line_prefix
ログメッセージの頭につける情報
#設定例
log_line_prefix = '%t [%p]: [%l-1] user=%u, db=%d'
#使用可能値
%t = タイムスタンプ(ミリ秒単位はなし)
%p = プロセスID
%l = セッション行番号
%u = ユーザ名
%d = データベース名
user, db の指定は任意
sighup
log_lock_waits = on
deadlock_timeout で指定した時間(デフォルト1秒)以上の
ロック待ちをログに残す
superuser
log_disconnections = on クライアントの切断をログに残す backend
log_connections = on クライアントの接続をログに残す backend
log_checkpoints = on チェックポイントの実行をログに残す sighup
lc_messages = 'C' ログの言語は英語限定 superuser
log_temp_files = 0 一時ファイルが作成されたことをログに残す(0はすべて) superuser
* 記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。 Copyright 2017 Insight Technology, Inc. All Rights Reserved.
記載されている会社名、サービス名、製品名は、株式会社インサイトテクノロジーおよび各社の商標または登録商標です。
Copyright 2017 Insight Technology, Inc. All Rights Reserved.

More Related Content

笔辞蝉迟驳谤别蝉辩濒安定运用のご提案