私はデータベースにmysql接続をプールするのをサポートするrails 2.3.5アプリケーションを実行しています。しかし、私は雑種サーバがシングルスレッドであることを読んで覚えています。単一のスレッド・アプリケーションに対して、接続プールを持つ点は何ですか?私のアプリをマルチスレッドする方法はありますか?レール接続プーリングはどのように機能しますか?
はまた、接続プールはルビー1.8は「緑」のスレッドを持っていることを、理解していますか?
乾杯!
私はデータベースにmysql接続をプールするのをサポートするrails 2.3.5アプリケーションを実行しています。しかし、私は雑種サーバがシングルスレッドであることを読んで覚えています。単一のスレッド・アプリケーションに対して、接続プールを持つ点は何ですか?私のアプリをマルチスレッドする方法はありますか?レール接続プーリングはどのように機能しますか?
はまた、接続プールはルビー1.8は「緑」のスレッドを持っていることを、理解していますか?
乾杯!
接続管理
など雑種/乗用車/ようなシングルスレッドサーバの接続プーリングの主な利点は、接続が主レールに処理を依頼外側ラックハンドラに維持/確立されていることです。これは、異なる方法で使用されているので、何度も何度も接続を確立することができます。目標は、確立された接続を再利用し、接続の数を最小限に抑えることです。これにより、特定のリクエスト処理サイクル内で、場合によってはリクエスト間でも再接続する必要がなくなります(正しくリコールすれば)。ほとんどのユースケース(雑種犬/旅客)がシングルスレッドであり、一度に単一の接続を使用できますが
複数の同時接続
- フルマルチスレッド持つ/アプリケーションサーバのJRubyや環境がありますサポート。 Railsは2.2
TLので、スレッドセーフとなっている; DR:
プールは自動的に接続を確立します。プールから複数の同時db接続を使用する人もいます。
、それは私がMySQLの設定で150 MAX_CONNECTIONSを持っている場合は、プールレール内の各接続は、150の最大のために、これらの接続の1を消費します作成していることを意味するのでしょうか? つまり、私のアプリケーションがDBを使用している唯一のアプリケーションであれば、database.ymlのプールをmax_connectionsの数に等しく設定できますか? – xentek
これは、アプリケーションのインスタンスが1つだけの場合にのみ当てはまります。 20人の従業員を持つPassengerサーバーがある場合、それぞれ最大プールサイズまで消費する可能性があります。 – Winfield
つまり、 'pool * workers = max_connections'ですか? – xentek