Com.Mysql.Jdbc.Exceptions.Jdbc4.Communicationsexception: Communications Link Failure Software Caused Connection Abort: Recv Failed

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure Software caused connection abort: recv failed

Your mySQL connections are timing out before your connection pool recognizes them. There are multiple ways to fix this:

  1. Increase the timeout value in mysql config file (my.ini)
  2. Reduce the idle time in your connection pool, so that it will discard the connection before mysql will close it
  3. Add a validate connection query in your pool config so that the pool tests each connection before it gives it to you, but this can slow down the system terribly.

How to fix java.net.SocketException: Software caused connection abort: recv failed

i fixed this probleme by increasing the timeout value in mysql config file = C:\Program Files (x86)\MySQL\MySQL Server 5.1\my.ini :

[mysqld] wait_timeout=2147483 interactive_timeout=2147483

and then i have restarted mysql service.

thank you @EJP

Spring Boot: Communications link failure after some hours of inactivity with Hibernate, JDBC and MySQL

I solved the problem as described here:
http://blog.netgloo.com/2015/07/09/spring-boot-communications-link-failure-with-mysql-and-hibernate/ , adding these configurations in the application.properties file:

spring.datasource.tomcat.testWhileIdle = true
spring.datasource.tomcat.timeBetweenEvictionRunsMillis = 60000
spring.datasource.tomcat.validationQuery = SELECT 1

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

So, you have a

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

java.net.ConnectException: Connection refused

I'm quoting from this answer which also contains a step-by-step MySQL+JDBC tutorial:

If you get a SQLException: Connection refused or Connection timed out or a MySQL specific CommunicationsException:
Communications link failure
, then it means that the DB isn't reachable at all. This can have one or more of the following causes:

  1. IP address or hostname in JDBC URL is wrong.
  2. Hostname in JDBC URL is not recognized by local DNS server.
  3. Port number is missing or wrong in JDBC URL.
  4. DB server is down.
  5. DB server doesn't accept TCP/IP connections.
  6. DB server has run out of connections.
  7. Something in between Java and DB is blocking connections, e.g. a firewall or proxy.



To solve the one or the other, follow the following advices:

  1. Verify and test them with ping.
  2. Refresh DNS or use IP address in JDBC URL instead.
  3. Verify it based on my.cnf of MySQL DB.
  4. Start the DB.
  5. Verify if mysqld is started without the --skip-networking option.
  6. Restart the DB and fix your code accordingly that it closes connections in finally.
  7. Disable firewall and/or configure firewall/proxy to allow/forward the port.


See also:

  • How should I connect to JDBC database / datasource in a servlet based application?
  • Is it safe to use a static java.sql.Connection instance in a multithreaded system?

Official reasons for Software caused connection abort: socket write error

This error can occur when the local network system aborts a
connection, such as when WinSock closes an established connection
after data retransmission fails (receiver never acknowledges data sent
on a datastream socket).

See this MSDN article. See also Some information about 'Software caused connection abort'.



Related Topics



Leave a reply



Submit