Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Próba aktualizacji 640k wierszy w mySQL powoduje utratę połączenia z serwerem MySQL podczas zapytania

Istnieje inna potencjalna przyczyna tego błędu, a mianowicie pula połączeń ActiveRecord żniwiarz . Po włączeniu żniwiarz skanuje pulę połączeń w poszukiwaniu „martwych” połączeń i zamyka je. W moich testach wydaje się być nadgorliwy i zamyka również idealnie żywe połączenia (generalnie te, które uruchamiają nieco większe zapytania).

Spróbuj wyczyścić reaping_frequency z twojej konfiguracji DB (która ją wyłącza) i sprawdź, czy to pomaga. Przeskanuj bazę kodu w poszukiwaniu tego ciągu i upewnij się, że nie jest on ustawiony (lub po prostu usunięty!). Jeśli zobaczysz linię taką jak config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 , wiedz, że || 10 w rzeczywistości ustawia niską wartość domyślną wynoszącą 10s. Ten wzorzec był w bazie kodu rails przez pewien czas, dopóki zmiana nie została cofnięta ponieważ powoduje różne problemy, w tym zabijanie długich zapytań , ale nadal jest zalecany przez Heroku .

Jeśli wyłączenie żniwiarki naprawi problem, zalecam pozostawienie go wyłączonego. Railsy nie ustawiają go już domyślnie i wydaje się, że powoduje więcej problemów niż rozwiązuje.

Wystąpił błąd podobny do Twojego i tak go naprawiłem. Osobiście wyłączam to. O moim konkretnym problemie napisałem bardziej szczegółowo na moim blogu .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Utwórz funkcję przechowywaną w MySQL z dynamiczną liczbą argumentów

  2. Czy mogę wykrywać i obsługiwać ostrzeżenia MySQL za pomocą PHP?

  3. Formularz HTML / Php nie dodaje się do bazy danych SQL

  4. Jak łączyć ciągi w MySQL za pomocą CONCAT()

  5. Konfiguracja Tomcata przy użyciu DBCP