1

Sequel を使用して、Rack webapp から MySQL データベースと通信しています。場合によっては、アプリケーションがアイドル状態のwait_timeoutままで、サーバー上でそれを超えることがあります (デフォルトの 8 時間のままにしています)。例外は、有効にできることを示唆していますautoReconnectが、明らかにそれは推奨されていません。とにかく、その場合でも例外が発生し、操作を再試行する必要があります。

が悪いパターンの場合autoReconnect、どのパターンを使用すればよいですか? 私がやりたいことは

DB["myDB"].pool.hold do | conn |
  ... do stuff
end

もちろん、接続が古い場合はスローされます。すべてを begin-rescue でラップして再試行することもできますが、プールが大きい場合は、機能するプールが見つかるまでに 10 回または 20 回再試行することになる可能性があります。

4

1 に答える 1

4

考えられる解決策は3つあります。

1)wait_timeoutを増やします。

2)cronジョブを使用して、wait_timeoutよりも接続が頻繁に使用されるようにします。

3)connection_validation拡張機能を使用します。これは、切断が検出された場合に再接続を透過的に処理します。

于 2012-12-13T16:38:50.870 に答える