[pgsql-jp: 40257] Re: 同時接続数を増やすとサービス停止

Takahiro Itagaki itagaki.takahiro @ oss.ntt.co.jp
2010年 4月 30日 (金) 09:36:03 JST


"ishijima" <ishijima @ sw-network.co.jp> wrote:

> PostgreSQLの同時接続数を300に増やす必要があり、postgresql.conf
> の内容をすこし変更して試したのですがうまくいきませんでした。
> よくよく調べたところ、Windowsのレジストリを変更することで問題を
> 回避できるように見えるのですが、本当にこの方法が正しいのか迷って
> います。

> HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\
> Session Manager\SubSystems\Windows の、
> SharedSection=1024,3072,512 の部分を
> SharedSection=1024,3072,1024 に
> 書き換えて、Windowsを再起動。
> 再起動後、プログラム(A)を実行すると300個の接続が成功します。

PowerGres の FAQ に同様の方法がありましたので、対処方法としては
正しいかと思います。ただ、PostgreSQL 本体のマニュアルにも、
この記述はあるべきですので、追記して欲しいですね。
http://powergres.sraoss.co.jp/s/ja/faq.php

PostgreSQL は接続ごとにプロセスを生成するので、比較的多くの
デスクトップヒープを消費するらしいです。過去のどこかのバージョンで
消費を押さえるよう改造が入っていた気がしますが、まだ100接続を
超えるとデフォルトでは足りなくなるのでしょう。
# Windows だと、そもそもマルチプロセスよりもマルチスレッド・モデルが
# 好ましいのですが、今さらどうこはできませんね……。

ところで、Windows で接続数を増やすと、UNIX と比べてどうしてもメモリ消費が多く
なってしまうので、可能ならば接続数を減らして代わりにコネクション・プールなどで
仮想的な接続数のみを増やすほうが、パフォーマンス上は好ましいと思われます。

------------------------------------------------------------
NTT オープンソース ソフトウェア センタ
板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>




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