sql >> Database >  >> RDS >> Mysql

JDBC FOUT:08S01 gebeurt soms

U bent hoogstwaarschijnlijk ofwel

  1. Sockets openen en niet sluiten. Na verloop van tijd wordt het aantal open sockets te groot en loopt de applicatie vast.
  2. Je opent veel te veel sockets tegelijk. Misschien omdat je heel veel threads hebt.

Ik gok dat het nummer 1 is. Controleer uw code nogmaals en zorg ervoor dat u al uw Connection-objecten en ResultSet-objecten sluit.

Als je #2 tegenkomt, kun je overwegen om minder threads te gebruiken (na een bepaald punt doet te veel threads meer kwaad dan goed) of een verbindingspool te gebruiken zoals c3p0 die slechts een bepaald aantal verbindingen tot stand brengt en uw threads in staat stelt deze te delen. Het gebruik van c3p0 is over het algemeen een goed idee en zou u ook in staat moeten stellen #1 sneller te detecteren.

Een derde optie is om een ​​abstractie op een hoger niveau te gebruiken, zoals JPA of JDO, die het verbindingsbeheer voor u zullen regelen.



  1. Tabel wijzigen om externe sleutelbeperking te geven

  2. Laravel - Querybuilder met join en concat

  3. Aangezien SQL Server geen pakketten heeft, wat doen programmeurs om dit te omzeilen?

  4. Hoe een 128-bits nummer op te slaan in een enkele kolom in MySQL?