Hatena::ブログ(Diary)

ablog このページをアンテナに追加 RSSフィード Twitter

2018-01-21

PostgreSQL で "Too many open files in system" が発生する

事象

以下のエラーがログに出力される。

Too many open files in system

考察

Linuxカーネルパラメータ fs.file-max はシステム全体でオープンできるファイルディスクリプタ数、つまり PostgreSQL 以外がオープンするファイルディスクリプタも含まれる。

PostgreSQL がオープンするファイルディスクリプタ数は max_files_per_process でサーバプロセスごとにオープンできる上限を設定できる。ソケットを使うときもファイルディスクリプタをオープンするので max_connections の数もファイルのディスクリプタ数に関係する。


参考

max_files_per_process (integer)

それぞれのサーバプロセスが同時にオープンできるファイル数の最大値をセットします。 デフォルトは1000ファイルです。 もしもカーネルプロセス毎の安全制限を強要している場合、この設定を気にかける必要はありません。 しかし、いくつかのプラットフォーム(特にほとんどのBSDシステム)では、もし多くのプロセス全てがそれだけ多くのファイルを開くことを試みたとした場合、実際にサポートできるファイル数より多くのファイルを開くことを許しています。もしも「Too many open files」エラーが発生した場合、この設定を削減してみてください。 このパラメータサーバ起動時にのみ設定可能です。

19.4. 資源の消費

3.2.1. カーネルパラメータ

Linux カーネルパラメータ設定により、PostgreSQL が使用するシステムのリソースの制限を変更することができます。システム全体でオープン可能なファイル数や接続数に応じたセマフォの全体数、共有メモリサイズなど、規模に応じたシステムリソース容量の設定を行います。カーネルパラメータの設定値については、マニュアル9を参考にしてください。

カーネルパラメータ説明関連する PostgreSQLパラメータ
fs.file-maxシステム全体で使用可能なファイルディスクリプタ数を指定する。PostgreSQL のバックエンドプロセスが同時にオープンするファイル数の設定と最大接続数から、PostgreSQL要求するファイルディスクリプタ数を確認することができる。max_files_per_process
バックエンドプロセス要求する最大ファイルディスクリプタ数。
max_connections
DB への最大接続数。
https://www.pgecons.org/wp-content/uploads/PGECons/2013/WG2/11_PerformanceTuning.pdf

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yohei-a/20180121/1516523756