[pgsql-jp: 37503] Re: pg_ctl からの起動を行っても起動できない

岩瀬 肇 iwase-h @ cnt.mxy.nes.nec.co.jp
2006年 8月 28日 (月) 19:50:22 JST


ご返信ありがとうございます。

> まずは、postgresql.conf でログ出力を有効にして、
> ログの内容を確認されてはどうでしょうか。

あう…そうですね。。。
-Sを普通につけていましたが、-Sをはずして起動したところ

$ FATAL:  could not create semaphores: デバイスに空き領域がありません
DETAIL:  Failed system call was semget(5435007, 17, 03600).
HINT:  This error does *not* mean that you have run out of disk space.
        It occurs when either the system limit for the maximum number of semaphore sets (SEMMNI), or the system wide maximum number of semaphores (SEMMNS), would be exceeded.  You need to raise the respective kernel parameter.  Alternatively, reduce PostgreSQL's consumption of semaphores by reducing its max_connections parameter (currently 100).
        The PostgreSQL documentation contains more information about configuring your system for PostgreSQL.

となってしまいました。。。

全てのデータベースで最大接続数を300にしていたのを
接続数が多いものを除いてデフォルトの100に戻したところ
全てのデータベース(8つ)が起動できました。


> その後で、各プロセスが使用するメモリが、必要プロセスの数だけ
> 足りているか、試算するべきだと思います。

すいません、ここでもう一点質問させてください。
シーラカンス本第2版を片手に調べているのですが、
試算方法がよくわかりません。

上記のエラー文を見ている限り、「セマフォが足りません。」と言われている
ようなのですが、どのような計算方法で「足りない」と言っているのでしょうか?
7つ目のデータベースを起動しようとして上記のようなエラーになりました。
ということは接続数の上限は300×6〜300×7の間となります。
ipcs -l -s で確認したセマフォの制限は以下の通りです。

------ セマフォの制限 --------
最大配列数 = 128
配列毎の最大セマフォ数 = 250
システム全体の最大セマフォ数 = 32000
semop 呼び出し毎の最大命令数 = 32
セマフォ最大値 = 32767

大変申し訳ありませんが、計算方法を教えてください。

よろしくお願い致します。



> 鈴木@KEGと申します。
> 
> >> 共有メモリが足りないとかないですか?
> 
> postgresql.conf の設定から、プロセスが使用するメモリを試算して
> メモリ(swapも?)の総量は照らし合わせましたか?
> 
> という事が言いたかったんではないでしょうか。(推測)
> カーネルの共有メモリ の事では無いと思います。
> 
> 私も、メモリが足りていない気がしますが、
> まずは、postgresql.conf でログ出力を有効にして、
> ログの内容を確認されてはどうでしょうか。
> 
> その後で、各プロセスが使用するメモリが、必要プロセスの数だけ
> 足りているか、試算するべきだと思います。
>  -----------------------------------------
>       鈴木 徹 (SUZUKI Toru)
>       Kenwood Engineering Corporation.
>  -----------------------------------------
> 
> From: "岩瀬 肇" <iwase-h @ cnt.mxy.nes.nec.co.jp>
> > ご返信ありがとうございます。
> > 
> >> 共有メモリが足りないとかないですか?
> > 
> > 早速試してみました。
> > 
> > Fodora Core 3 を使っているので、
> > 
> > /sbin/sysctl -a | grep shmmax
> > 
> > で、共有メモリの最大サイズを確認したところ
> > 
> > kernel.shmmax = 33554432
> > 
> > と表示され、最大32MBしかとっていなかったようなので、
> > 
> > /sbin/sysctl -w kernel.shmmax=268435456
> > 
> > として、最大256MB割り当てるように設定を変更し、
> > 変更が反映されているか
> > 
> > /sbin/sysctl -a | grep shmmax
> > 
> > で確認したところ、
> > 
> > kernel.shmmax = 268435456
> > 
> > となり、反映されているようなので、再度
> > 
> > pg_ctl -o "-i -S -p (ポート番号)" -D (データディレクトリ)
> > 
> > として、起動を試みましたが、残念ながら、
> > 起動してくれませんでした。

-- 
岩瀬 肇 <iwase-h @ cnt.mxy.nes.nec.co.jp>




pgsql-jp メーリングリストの案内