2015-09-09 15 views
5

私は最近、mysqlからmariadbへの2ノードクラスタデータベースによるレプリケーションをサポートするためにデータベースを移行しました。データベースは別のドメインでホストされており、ELBを介してアプリケーションにアクセスすると、アプリケーションがうまく動作するノードの1つにポイントしますが、ELB URLを使用してデータベースに接続すると、ランダムに変動し、ここでELB上のmariadb galeraクラスタを使用したgrailsアプリケーションでのMySQL接続タイムアウト

Communication Link Failure 
could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query 

は私のデータソース設定である: -

dataSource { 
shard = false 
pooled = true 
driverClassName = "com.mysql.jdbc.Driver" 
//dialect = "com.deerwalk.everest.MySQLUTF8InnoDBDialect" 
dbCreate = "update" // one of 'create', 'create-drop','update' 

properties { 
    initialSize=5 
    maxActive=50 
    minIdle=5 
    maxIdle=25 
    maxWait = 10000 
    maxAge = 10 * 60000 
    timeBetweenEvictionRunsMillis=5000 
    minEvictableIdleTimeMillis=60000 
    validationQuery="SELECT 1" 
    validationInterval=15000 
    testWhileIdle=true 
    testOnBorrow=true 
    testOnReturn=false 
    jdbcInterceptors = "ConnectionState" 
    defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED 
} 

誰もが、私は問題を考え出しいただきました!間違って識別し、それ

+0

DataSourceConfig.groovyでmaxWaitとmaxAgeを増やしてみてください。通常よりも時間がかかる可能性があります。 –

+0

は既にすべての可能な組み合わせを試しています – thickGlass

+0

DataSourceConfig設定にautoReconnectプロパティを追加する方法についてデフォルトはfalseです。あなたは本当にそれを設定し、あなたの問題を解決するかどうかを確認することがあります。 –

答えて

4

のための可能な解決策を提供してくださいすることができ、フィールドはELBにありましたidleTimeOutと呼ばれるものhは60秒に設定され、1分以上かかるクエリは予期せずにドロップされていましたが、600秒にタイムアウトしても問題はそれ以上複製されません。 :)

関連する問題