2020年04月10日

DB接続エラーで、Unable to con

DB接続エラーで、Unable to connect to PostgreSQL server: FATAL: sorry, too man...DB接続エラーで、Unable to connect to PostgreSQL server: FATAL: sorry, too many clients already

接続数が制限値を超えているのと思いますが、適切な解決方法はありますでしょうか? error-logを見るとDB接続をしている部分で負荷をかけていると思われるのは、

DBを使ってセッションを管理(サーバーのセッションが使えないため)していて、毎ページセッションを取得しているところです。



session_set_save_handler("pg_sess_open","pg_sess_close","pg_sess_read","pg_sess_write","pg_sess_destroy","pg_sess_gc");



エラー自体の解決方法として考えられるのはPosgresSQLの設定にて、以下を変更することが挙げられていました。



max_connections = 100 → 300

shared_buffers = 1000 → 3000



そこで3点質問です。

1. PostgresSQLの設定変更以外にエラーを回避できる方法があるのか?

(DBセッション以外のセッション利用等プログラムの面で)

2. どのくらいの負荷がかかっている(接続数がある)のかを調べるにはどうすれば良いか。

3. 設定を変更する場合、適当な設定値を判断する為にはどのようにすべきか。(スペックや負荷の具合の問題等)



サーバーの設定等については無知なので、ご教授いただけると助かります。

どうぞ宜しくお願いします。1. pgpoolやpconnectなどのコネクションプーリング手法を使えば同時接続数を抑えられる可能性はあります。

ただし、トランザクション処理などで一部問題が出る可能性はあります。(実装方法次第)

セッション管理だけならばセッションハンドラにmemcachedを使うという手もあるかもしれません。

2. 接続数だけであればnetstat -anの結果からアクティブなコネクション数を数えるというのはどうでしょうか

3. これは搭載している資源やカーネルの設定(共有メモリ上限やセマフォなど)によります。

try & errorで最適の値を見つけるしかないでしょう。有り難う御座います。

お礼が遅くなり申し訳御座いません。



セッションハンドラにmemcachedはとても興味がわきましたので良く調べてみたいと思います。



接続数については、コマンドを試してみましたが結果が良くわからないので、もう少し調べてみて、また質問させて頂くかも知れません。



本当に有り難う御座いました。
posted by 楽器ショピングスタッフブログ at 10:11| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: