Search code examples
javamysqlperformancejdbcfailover

JDBC MySQL conect to fail over node very slow


My environment have 2 MySQL server (INS1 and INS2) and when I tested failover mode with down INS1 and driver creat connection to INS2 it has very very slow to connected (It has occur on Glassfish connection pool too.)

final String connstr = "jdbc:mysql://INS1,INS2:3306/mysql";
Properties props = new Properties();
props.put("user", "xxx");
props.put("password", "xxx");
props.put("failOverReadOnly", "false");
props.put("roundRobinLoadBalance", "false");

return DriverManager.getConnection(connstr, props);

How to tune jdbc properties?

run: When INS1 run. INFO: Connected in 350 ms

INFO: Connected in 16 ms

INFO: Connected in 15 ms

INFO: Connected in 17 ms

INFO: Connected in 15 ms

INFO: Connected in 16 ms BUILD SUCCESSFUL (total time: 0 seconds)

run: When INS1 down. INFO: Connected in 1,380 ms

INFO: Connected in 1,060 ms

INFO: Connected in 1,058 ms

INFO: Connected in 1,060 ms

INFO: Connected in 1,055 ms

INFO: Connected in 1,041 ms BUILD SUCCESSFUL (total time: 6 seconds)


Solution

  • //Timeout for socket connect (in milliseconds), with 0 being no timeout. Only works on JDK-1.4 or newer. Defaults to '0'. props.put("connectTimeout", "100");