sql >> データベース >  >> RDS >> Mysql

mySQLで640k行を更新しようとすると、クエリ中にMySQLサーバーへの接続が失われます

    このエラーには別の潜在的な理由があります。それは、ActiveRecord接続プール刈り取り 。有効にすると、リーパーは接続プールをスキャンして「デッド」接続を探し、それらを閉じます。私のテストでは、それは熱心すぎるように見え、完全に生きている接続も閉じます(通常、わずかに大きなクエリを実行している接続)。

    reaping_frequencyをクリアしてみてください DB構成(オフにします)から、それが役立つかどうかを確認します。コードベースでその文字列をスキャンし、設定されていない(または単に削除されている)ことを確認します。 config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10|| 10 実際には10秒の低いデフォルトを設定しています。このパターンは、変更が元に戻されるまで 、しばらくの間Railsコードベースに含まれていました。 長時間実行されるクエリの強制終了 など、さまざまな問題が発生するためです。 、ただし、Herokuが推奨 です。 。

    リーパーを無効にすると問題が解決する場合は、無効のままにしておくことをお勧めします。 Railsはデフォルトで設定しなくなり、解決するよりも多くの問題を引き起こすようです。

    私はあなたのようなエラーがありました、そしてそれは私がそれを修正した方法でした。個人的には、無効にしています。特定の問題については、ブログ



    1. RailsコンソールはIDの配列でユーザーを検索します

    2. COLLATION'utf8_general_ci'は、CHARACTERSET'latin1'には無効です。

    3. SQLでGROUPBY句を使用する方法

    4. MYSQLテーブルを永続的な方法でソートする方法は?