これにより、容量不足を起こす前にディスクを増設するといった対処をすることができます。 容量の監視は、OSのlsコマンドやduコマンド、PostgreSQLのpg_database_size関数を利用します。また、OSSのpg_statsinfoなどを利用することもできます。 性能監視 pg_stat_statementsビューを利用した例は、「チューニング ~ SQLチューニングの概要 ~」の「3.1 統計情報ビューを利用して検出する方法」および「チューニング ~ SQLチューニングを実施する ~」の「2. PostgreSQLの監視方法と監視例について説明。死活監視、状態監視、メッセージ監視、容量監視、性能監視に利用するコマンド、関数、統計情報ビューについて実行例を交えて説明します。 Windows 10のディスク上から不要なファイルを削除して空き容量を増やす方法について解説します。不要なファイルを削除することで空き容量を増やすだけでなく、Windowsの動作自体も軽くなりますので … 処理が遅いSQLを検出」を参照してください。, 「pg_stat_activityビュー」を使用することで、長時間放置されているトランザクションの有無や、同時接続数などを確認することができます。長時間放置されているトランザクションの有無は、「xact_start」(トランザクションが開始した時刻)を確認してください。トランザクション実行中でなければ値は入りません。何か値が入っていて長時間経過していれば、長時間放置されているということになります。同時接続数の確認は、pg_stat_activityビューの行数([RECORD x]の数)を確認してください。, pg_stat_activityには他にも、「backend_start」(プロセスが開始した時刻)、「query_start」(クエリが開始した時刻)、「wait_event_type」(待機の状態)、「wait_event」(待機イベント名)、「state」(プロセスの状態)、「query」(最後に実行したクエリ)、「backend_type」(バックエンドの種別)のような、確認しておくべき項目がたくさんあります。これらも併せて確認してください。, 「pg_stat_databaseビュー」を使用することで、コミットやロールバック回数を確認することができるため、スループットを算出することができます。「xact_commit」(コミットされたトランザクション数)、「xact_rollback」(ロールバックされたトランザクション数)を定期的に取得してください。この情報を元に、「((今回取得時のxact_commit)-(前回取得時のxact_commit))÷ 情報取得間隔の時間」の計算をすることで、「単位時間あたりのコミット数」を確認することができます。同様に、「単位時間あたりのロールバック数」も計算し、確認してください。, また、「blks_read」(共用メモリに無かったブロックの読み込み回数)と、「blks_hit」(共用メモリにあったブロックの読み込み回数)を利用することで、キャッシュヒット率を算出することができます。メモリチューニングでは、これを100に近づけることを目標とします。, データベースシステムのどのような情報を、どのように監視すれば良いのか、「監視対象」と「監視方法」に着目して説明しました。データベースシステムの要件に応じて様々な観点で監視を行うことで、異常やその兆候をより早く検出することができます。 なお、PostgreSQLのインフォメーションやエラーメッセージをsyslogに出力すると、「ERROR」は「WARNING」に、「FATAL」は「ERR」に、「PANIC」は「CRIT」に変換されます。そのため、「WARNING」「ERR」「CRIT」を監視します。, データベースクラスタ領域(PGDATA)、TABLESPACE領域、アーカイブWAL(Write-Ahead Log)領域のディスク容量が足りなくなると、データベースが更新できなくなったり、PostgreSQLが強制終了したりと運用に大きな支障をきたします。ディスクの使用率や空き容量を監視することで、領域不足の予兆を検知することができます。これにより、容量不足を起こす前にディスクを増設するといった対処をすることができます。 ここでは、PostgreSQLのデータベースシステムの監視対象と監視方法の概要について説明します。本資料は、Linuxを前提としています。, データベースシステムの監視は、システムを安定稼働させ続けるために必要であり、何に影響を受けるかを把握し、異常を検出した際に適切に対処する必要があります。 はじめての人もそうでない人もはじめまして。 河野と申します。 いきなりすいません・・・。 私の名前をさっそく覚えていただいた方には申し訳ないのですが、 弊社にはもう一人河野というものがおり、そっちとは違う方と覚えて頂けると溜飲が下がります…。 psqlコマンドは、PostgreSQLクライアント(別マシン)からも実行できます。, CPU使用率は、OSの「sarコマンド」を使用して確認します。全体を取得する場合は「-uオプション」を、コア単位に取得する場合は「-P ALL」を指定します。例のように、「1 60」と指定すると、「1秒おきに60回」取得することができます。CPU使用率は、「%user」(ユーザーが利用しているCPU使用率)、「%nice」(nice値を変更しているプロセスのCPU使用率)、「%system」(システムが利用しているCPU使用率)で確認することができます。「%user」が上昇している場合、特定のアプリケーションでCPUが消費されている可能性があるので、psコマンドなどで対象のアプリケーションを確認してください。 容量の監視は、OSのlsコマンドやduコマンド、PostgreSQLのpg_database_size関数を利用します。また、OSSのpg_statsinfoなどを利用することもできます。, 遅いSQLはないか、ロック待ち時間の長いSQLはないか、などを監視します。キャッシュヒット率やインデックスの使用率、OSのリソースの状態と併せて監視することで、チューニングポイントを判断することができ、問題に素早く対応できるようになります。チューニングポイントは、システムチューニング(postgresql.confといった設定ファイル、ハードウェアリソースなど)とSQLチューニング(テーブル設計、SQL設計など)に分類できます。また、不要領域やインデックスのばらつきを監視し、対応することで、性能の向上が期待できます。 PostgreSQL導入に向けての取り組み ~大規模システムへの適用を目指して~(5) 4.3 運用面の着目点 3: DB メンテナンスの改善 データの断片化による性能低下に対処する方法として、弊社では PostgreSQL の CLUSTER コマンドを利用するようにしていました。 freeコマンドは、PostgreSQLデータベースサーバ上で実行してください。, ディスクごとのI/Oに関する情報は、OSの「iostatコマンド」を使用して確認します。デフォルトで、CPU統計とディスク統計が表示されます。「-xオプション」を指定することで、より詳細なディスクの統計データを表示することができます。I/Oビジー率は「%util」(デバイスの帯域幅使用率)で確認することができます。また、「avgrq-sz」(リクエストの平均サイズ)、「avgqu-sz」(リクエストの平均キュー長)、「await」(リクエストの平均待ち時間(ミリ秒))から具体的な状況を確認することもできます。 性能の監視は、PostgreSQLの統計情報ビューやサーバログを利用します。また、OSSのpg_statsinfoやpgBadgerなどを利用することもできます。, 「2. sarコマンドは、PostgreSQLデータベースサーバ上で実行してください。, PostgreSQLは、インフォメーションやエラーなどのメッセージをサーバーログに出力しています。このログの内容を監視することで、エラーが発生した場合は、メッセージからエラー原因の分析を行い、対処することができます。, メッセージには、発生した問題の深刻度ごとに「メッセージレベル」が設定されます。「PANIC」「FATAL」「ERROR」はデータベースの安定稼働に影響する可能性があるため、この3つの監視をお勧めします。性能に関する監視を行う場合は、「LOG」も監視対象としてください。メッセージレベルと、レベルごとの意味を以下に示します。postgresql.confの設定によりログの出力先をsyslogに変更した場合、メッセージレベルは表のsyslog欄のレベルに変換されます。, エラーが発生した場合、ログに記録される「メッセージ」が、原因の特定や分析に役立ちます。また、PostgreSQLでは、エラーメッセージのほかにエラーの発生箇所やヒント情報をログに出力します。これらを利用して、エラーの分析や調査を行ってください。, メッセージ監視をするためには、メッセージをログファイルに書き出すように設定しておく必要があります。以下にメッセージ監視に必要な主なpostgresql.confのパラメーターを示します。, データベースクラスタ領域(PGDATA環境変数で指定したディレクトリ)、TABLESPACE領域、アーカイブしたトランザクションログ(WAL:Write-Ahead Log)を格納しておく領域のディスク容量が足りなくなると、以下のような支障をきたします。, これらの問題を防ぐために、ディスクの使用率や空き容量を監視してください。そして、容量不足を起こす前に以下のような対処を行ってください。, 例えば、他のツールと連携して「ディスクの空き容量が20%未満になったらアラームを挙げる」などの設定をしておくことで、容量不足を起こす前にディスクを増設するといった対処をすることができます。この「20%」という閾値は、対処する時間も考慮して、余裕をもった値に設定してください。