2013-05-17 5 views
0

Я развернул приложение grails в tomcat 7. Соединение с базой данных работает нормально в обычное время, но ночью соединение закрывается. На следующий день я должен перезапустить tomcat, чтобы он работал.Grails mysql время подключения в режиме производства

Вот моя строка подключения в файле конфигурации.

production { 
     dataSource { 
      dbCreate = "update" 
      pooled = true 
         logSql = true 
         driverClassName = "com.mysql.jdbc.Driver" 
         dialect = "org.hibernate.dialect.MySQL5InnoDBDialect" 
         url = 
      properties { 
       maxActive = -1 
       minEvictableIdleTimeMillis=1800000 
       timeBetweenEvictionRunsMillis=1800000 
       numTestsPerEvictionRun=3 
       testOnBorrow=true 
       testWhileIdle=true 
       testOnReturn=true 
       validationQuery="SELECT 1" 
      } 
     } 

журнал ошибок:

Broken pipe. Stacktrace follows: 
java.net.SocketException: Broken pipe 
     at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) 
     at java.net.SocketOutputStream.write(SocketOutputStream.java:153) 
     at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82) 
     at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140) 
     at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3832) 
     at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2471) 
     at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651) 
     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2728) 
     at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2678) 
     at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612) 

также я вижу это сообщение в лог-файле.

appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. 

Как исправить проблему с истечением времени соединения.

+0

Похоже, связанные с [этой MySql ошибка] (http://bugs.mysql.com/bug.php?id=68556), если используется тот же разъем. – dmahapatro

+0

Спасибо, выглядит как плагин mysql, еще старая версия для grails. позвольте мне попробовать с новым драйвером и обновить вас – sfgroups

+0

Теперь я добавил последний драйвер mysql и использовал пул соединений mysql. теперь его ошибка с отключением – sfgroups

ответ

2

Вы должны добавить autoReconnect=true к URL-адресу соединения, это поможет в решении таких проблем.

Как:

production { 
    dataSource { 
    ... 
    url = 'jdbc:mysql://localhost/dbname?autoReconnect=true' 
    ... 
    } 
} 
+0

да, у меня есть autoReconnect = true. все равно он выдает сообщение об ошибке – sfgroups

+0

yes, Он будет давать сообщение в любом случае (для 'SELECT 1'), но должен снова подключиться сразу после получения этого исключения –

Смежные вопросы