SQLState relac: 08S01, thread:0
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: java.net.SocketException: No buffer space available (maximum connections reached?): connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
... 20 more
You're most likely either
I'm going to guess it's #1. Double check your code and make sure that you close all your Connection objects and ResultSet objects.
If you're running into #2 then you may want to consider using fewer threads (after a certain point having too many threads does more harm than good) or using a connection pool like c3p0 which will only create a set number of connections and allow your threads to share them. Using c3p0 is a good idea in general and should also allow you to detect #1 faster.
A third option is to use a higher level abstraction such as JPA or JDO which will take care of connection management for you.