2015-10-12 1 views
0

В настоящее время я использую Grails-2.2.4 по моей заявке, недавно я столкнулся с странной проблемой. В моей производственной войне приложение часто теряет соединение mysql через некоторый период, и для приложения требуется перезагрузка, чтобы соединение снова работало, и оно работает отлично еще на пару дней. Я использую Tomcat -бассейн JDBC: 7.0.47 и вот мой вот мои свойства DataSourceСоединение Mysql, потерянное после определенного промежутка времени grails application

dataSource { 
shard = false 
pooled = true 
driverClassName = "com.mysql.jdbc.Driver" 
dbCreate = "update" // one of 'create', 'create-drop','update' 
properties { 
    initialSize=5 
    maxActive=50 
    minIdle=5 
    maxIdle=25 
    maxWait = 10000 
    maxAge = 10 * 60000 
    minEvictableIdleTimeMillis=1800000 
    timeBetweenEvictionRunsMillis=1800000 
    numTestsPerEvictionRun=3 
    validationQuery="SELECT 1" 
    validationInterval=15000 
    testWhileIdle=true 
    testOnBorrow=true 
    testOnReturn=true 
    jdbcInterceptors = "ConnectionState" 
    defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED 
    } 
} 

Я имею такую ​​же конфигурацию, в каком-то другом приложении, и уже работает без каких-либо проблем

ответ

0

Попробуйте добавить autoreconnect аргумент в вашем источнике данных URL:

dataSource { 
    url = "jdbc:mysql://localhost:3306/mydb?autoReconnect=true" 
} 

Update

Еще одна причина может заключаться в том, что ваш брандмауэр TCP отключает соединение через некоторое время бездействия. Поэтому вам нужно изменить настройки таймаута TCP. Я даю связанный документ о том, как это сделать на Amazon EC2 http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html. Вы можете сделать это для своего провайдера, который должен быть таким же.

+0

Это уже есть – thickGlass

+0

Являются ли ваши серверы приложений Grails и сервер MySQL двумя разными серверами? –

+0

оба находятся на разных серверах – thickGlass