2016-08-08 3 views
0

私は、多くのワーカープロセスが1つのマスタプロセスから生成されるプロセスインフラストラクチャについて考えています。各作業者は1つの長時間実行されるタスクを実行し、タスクが終了すると殺されます。 24時間で約100000件の仕事があります。これは、タスクの結果をpostgresデータベースに書き込む必要があるまで問題にはなりません。これは、1日に1回のデータベース接続が100000になるためです。Rubyマルチプロセスの進捗接続

私の質問です:マスタープロセスで接続プールのようなものを処理し、子プロセスへの接続を引き渡す方法はありますか?そして、それが終了するまで子供は接続を閉じないであろうことを、可能になります(プロセスの所有者は、マスター・プロセスであるため)

答えて

0

PostgreSQLは少なくとも二つの一般的に使用される接続poolersあります

pgbouncerを - https://pgbouncer.github.io/features.html

はpgpool - 自分自身の機能セットを持っているどちらもhttp://www.pgpool.net/mediawiki/index.php/Documentation

。両方を評価し、どちらがあなたに最も適しているかを見てください。たとえば、pgbouncerのトランザクションプーリングを使用して、子ワーカーの1つが処理している間だけ接続を生成することができます。このプロセスが完了すると、接続がプールに戻されます。この量の並行性を処理するには、複数の接続プールが必要になるようです。

関連する問題