データベースのチューニング

データベース(PostgreSQL)のチューニング例を説明します。

中小規模・保存期間3年以内であれば、ノンチューニングでも一定の性能を確保することができますが、この先の長期間の安定運用、また数百~数千ユーザー規模への導入時等を考え、事前にPostgreSQLのチューニングを実施いただくことを推奨いたします。

PostgreSQLの各種パラメータを調整することでChatLuckの性能を高めることができます。



1.PostgreSQL設定ファイル


「postgresql.conf」ファイル

※PostgreSQLデータ格納場所直下に格納されております。
例)
Windows版「C:\Program Files\PostgreSQL\xx\data」
Linux版「/var/pgsql/data」
  ※xxにはご利用のChatLuckバージョンに合わせたものを記述してください。
     V4.5 R1.0以降      :  13
     V4.0 R1.0 ~ V4.0 R2.0 :  11
     V3.7 R1.0以前      : 9.6 
※テキストエディタにて編集が可能です。
※チューニング前の「postgresql.conf」ファイルを事前にバックアップしてください。


2.代表的なチューニング項目


※以下推奨値はサーバマシンにChatLuck(PostgreSQL対応版)のみを導入し稼動させることを前提に記載いたしております。
 他のシステムと共存させる場合はこの限りではございません。

【1】shared_buffers
PostgreSQL全体で使用する共有メモリキャッシュとなり、データの蓄積が進んだ際の応答性能に影響します。
サーバの搭載メモリの25%程度が目安となり、増やしすぎても効果はありません。

既定値:128MB

搭載メモリ:推奨値
2GB    :512MB
4GB    :1GB
8GB    :2GB

【2】work_mem
PostgreSQLの各プロセスが使用するソート用のメモリバッファです。
瞬間最大でメモリをwork_mem×max_connection+α消費するため、ピークを想定した設定を行ってください。

既定値:1MB

搭載メモリ:推奨値
2GB    :4MB
4GB    :8MB
8GB    :8MB

「#work_mem = 1MB」と先頭が#でコメントされている場合は「work_mem = 8MB」とコメントを外していただきますようお願いいたします。

【3】max_connections
同時接続受付数となります。
CGI実行数>max_connectionsになるとタイムアウトが発生し、応答性が大きく低下します。
参考事例:
 5,000ユーザー規模のピーク時瞬間最大アクセスが50~75CGI/秒程度

既定値:100

基本、変更は不要となります。
ピーク時にDBタイムアウトが発生する場合は調整いただきますようお願いいたします。

【4】effective_cache_size
OSがディスクキャッシュにどれくらいメモリを使用できるかを推定するための参考値。
実メモリの消費はしません。

既定値:128MB

搭載メモリ:推奨値
2GB    :512MB
4GB    :2GB
8GB    :4GB

「#effective_cache_size = 128MB」と先頭が#でコメントされている場合は「effective_cache_size = 2GB」とコメントを外していただきますようお願いいたします。


設定後、以下の順序でサービスを再起動してください。PostgreSQLを再起動いただくことで設定値が反映されます。
  • ・ChatLuck サービスの停止
  • ・PostgreSQL サービスの再起動
  • ・Redis サービスの再起動
  • ・ChatLuck サービスの起動

※設定後、PostgreSQLを再起動してもPostgreSQLが起動されない場合は設定値に問題がある可能性がございます。
 元の「postgresql.conf」ファイルに差し戻して、再起動を行ってください。

※その他、statement_timeoutの設定が有効である場合、クエリの発行時やDBダンプ等でタイムアウトが発生し、通常の運用やアップデート作業時に問題が生じる可能性がございますので、無効(# でコメントアウト)としてください。
 デフォルト値は無効となっております。

 

システムの保守(データベースの最適化)と運用(データのバックアップとリストア)に戻る

 

記載の製品名および商品名は、各社の商標、または登録商標です。