2012-01-05 8 views
6

デフォルトでは、親プロセスフォークと子プロセスの再調整で、データベースへの新しい接続が作成されます。Resqueで親と子のMySQL接続を共有するには?

これは動作しますが、何十人もの従業員がいる場合、MySQLはその多くの接続を開いたままにしてエラーをスローし始めます。

子どもに親のMySQL接続を使用させる方法はありますか?

答えて

3

残念ながら、MySQL接続を親から子に共有する安全な方法はありません。 (:http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.htmlすなわち)それはより多くの接続を受け入れることができるように

  1. 最も簡単な解決策をチューニングするためにMySQLサーバである:私はあなたが考慮すべき2つのオプションがあると思います。
  2. ResqueやMySQLサーバーへの複数の接続を避けるための設計(例:beanstalkd、Redisなど)の代替案を見てください。
+0

できるだけ早く多くのデータを処理できるようにするには、多くの接続を使用する必要があります。 beanstalkまたは他のキューイングシステムに変更しても、それは変更されません。記憶にRedisを使うのは悪い考えですが、Resqueはそれをキューイングに使用しており、完璧です。 – marcgg

+0

もっと多くの接続を許可する以外の方法はありませんか? – marcgg

+1

別のオプションは、 "resque-jobs-per-fork"リンクを使用することです:http://github.com/samgranieri/resque-jobs-per-fork。これにより、フォークごとに複数のジョブを処理し、必要な同時接続数を減らすことができます。このスレッドも役に立ちます:http://librelist.com/browser//resque/2010/6/28/reducing-database-churn/#fd6c9fec1ed29f2f06e10ce96b578dd0。 –