Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeitüberschreitungsproblem bei Basicdatasource-Verbindung (bei Verwendung von mysql)

Dinge, die Sie ausprobieren können:

  1. setMaxWait(-1) auf der BasicDataSource. Das sagt ihm, dass er unbegrenzt auf eine Verbindung warten soll.

  2. Prüfen Sie, ob wait_timeout auf Ihrem MySQL-Server ist standardmäßig auf 8h eingestellt.

  3. Setzen Sie ?autoReconnect=true auf Ihrer JDBC-URL

  4. setTestOnBorrow(true) auf der BasicDataSource. Dies verhindert, dass veraltete Verbindungen ausgegeben werden, erhöht jedoch den Overhead Ihrer App (obwohl Sie diesen Teil wahrscheinlich nicht einmal bemerken werden, wenn Sie bereits so lange einzelne Abfragen haben).

Im Allgemeinen finde ich es eine schlechte Idee, eine Verbindung immer wieder zu verwenden. Für mich ist der Sinn eines Pools, dass ich das nicht tun muss.

Sind Ihre Anfragen transaktionsbezogen? Sperrt eine wirklich lange Abfrage eine Haupttabelle?