RHEL4での話。PostgreSQLは8.3。
postgresqlが落ちた。
↓
ログに、
FATAL: could not open file "global/pg_database": Too many open files in system
↓
調べる。
lsof |grep postgre |wc -l
↓
ファイルディスクリプタ数が足りない?
↓
ulimit -a
↓
1024。小さい。
↓
cat /proc/sys/fs/file-max
↓
1533837。まだいける。
↓
とりあえず、
/etc/init.d/postgresqlのstart()の冒頭に、
ulimit -n 4096
を入れて、再起動。
↓
(上述の /etc/init.d/postgresql は元に戻す)
/etc/initscript を以下の内容で作成して、サーバー再起動。
ulimit -n 4096
eval exec "$4"
↓
反映結果は、サーバー再起動後、cat /proc/13945/limits | grep "open files"で
調べればいいんだけれど、limitsはKernel 2.6.24からしか使えないのであきらめる。
参考
Linuxのファイルディスクリプタ数を変更・確認する方法
以上です。
コメント