2011-02-27 18 views
2

私はデータベースにmysql接続をプールするのをサポートするrails 2.3.5アプリケーションを実行しています。しかし、私は雑種サーバがシングルスレッドであることを読んで覚えています。単一のスレッド・アプリケーションに対して、接続プールを持つ点は何ですか?私のアプリをマルチスレッドする方法はありますか?レール接続プーリングはどのように機能しますか?

はまた、接続プールはルビー1.8は「緑」のスレッドを持っていることを、理解していますか?

乾杯!

答えて

5

接続管理

など雑種/乗用車/ようなシングルスレッドサーバの接続プーリングの主な利点は、接続が主レールに処理を依頼外側ラックハンドラに維持/確立されていることです。これは、異なる方法で使用されているので、何度も何度も接続を確立することができます。目標は、確立された接続を再利用し、接続の数を最小限に抑えることです。これにより、特定のリクエスト処理サイクル内で、場合によってはリクエスト間でも再接続する必要がなくなります(正しくリコールすれば)。ほとんどのユースケース(雑種犬/旅客)がシングルスレッドであり、一度に単一の接続を使用できますが

複数の同時接続

- フルマルチスレッド持つ/アプリケーションサーバのJRubyや環境がありますサポート。 Railsは2.2

TLので、スレッドセーフとなっている; DR:

プールは自動的に接続を確立します。プールから複数の同時db接続を使用する人もいます。

+0

、それは私がMySQLの設定で150 MAX_CONNECTIONSを持っている場合は、プールレール内の各接続は、150の最大のために、これらの接続の1を消費します作成していることを意味するのでしょうか? つまり、私のアプリケーションがDBを使用している唯一のアプリケーションであれば、database.ymlのプールをmax_connectionsの数に等しく設定できますか? – xentek

+2

これは、アプリケーションのインスタンスが1つだけの場合にのみ当てはまります。 20人の従業員を持つPassengerサーバーがある場合、それぞれ最大プールサイズまで消費する可能性があります。 – Winfield

+0

つまり、 'pool * workers = max_connections'ですか? – xentek

関連する問題