2014-04-24 8 views
2

우리는 세 개의 노드를 가진 MySQL NDB Cluster를 설정했습니다. 여기에 설치의 세부 사항이 있습니다.
노드 1 - MultithreadedDataNode1, SQLNode1
노드 2 - MultithreadedDataNode2, SQLNode2
노드 3 - 우리가 설정 작동하는지 확인하기 위해 몇 가지 장애 복구 시나리오를 테스트하는노드 페일 오버 테스트와 함께 c3p0을 사용하는 방법

관리 노드. 클라이언트 측에서는 c3p0 연결 풀링과 함께 MySQLConnector v5.1.30을 사용하고 있습니다. 클라이언트는 Multimaster 매개 변수로 구성됩니다. 따라서 노드 또는 응용 프로그램 중 하나가 다운되면 다른 노드에서 JDBC 쿼리를 실행하고 계속 응답해야합니다.

그러나 SQLNode (포트 : 3306)가 다운 될 때 비정상적인 동작을 관찰하고 있습니다. 연결은 다른 노드로 장애 조치되지 않습니다.

<bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
       destroy-method="close"> 
     <property name="driverClass" value="com.mysql.jdbc.ReplicationDriver" />       <!-- useConfigs=clusterBase --> 
     <property name="jdbcUrl" value="jdbc:mysql:replication://192.168.102.22,192.168.102.23/hhmefep?autoReconnect=true&amp;failOverReadOnly=false&amp;roundRobinLoadBalance=true" /> 
     <property name="user" value="root"/> 
     <property name="password" value="changeit"/> 
     <property name="acquireIncrement" value="2" /> 
     <property name="minPoolSize" value="50" /> 
     <property name="maxPoolSize" value="100" /> 
     <property name="maxStatements" value="2000" /> 
     <property name="maxIdleTime" value="3600" /> 
     <property name="connectionTesterClassName" value="com.mysql.jdbc.integration.c3p0.MysqlConnectionTester" /> 
     <property name="testConnectionOnCheckin" value="true" /> 
     <property name="testConnectionOnCheckout" value="false" /> 
     <property name="idleConnectionTestPeriod" value="30" /> 
    </bean> 

나는 클라이언트를 시작하면,이 두 노드 및 실행은 다음과 같습니다 아래로

구성은 있습니다. 나는 첫 번째 노드 (192.168.102.22)에서의 mysqld 프로세스를 강제 종료 이후 , 나는 내가 아무것도 실종 경우

org.hibernate.exception.JDBCConnectionException: could not execute query 
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99) 
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 
at org.hibernate.loader.Loader.doList(Loader.java:2536) 
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276) 
at org.hibernate.loader.Loader.list(Loader.java:2271) 
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:119) 
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1716) 
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) 
at com.mi.persistence.dao.cdr.BganActiveCallsDaoImpl.findBganActiveCallsBy_Imsi_Nsapi_Apn(BganActiveCallsDaoImpl.java:53) 
at sun.reflect.GeneratedMethodAccessor283.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
at $Proxy23.findBganActiveCallsBy_Imsi_Nsapi_Apn(Unknown Source) 
at com.mi.persistence.service.cdr.BganActiveCallsServiceImpl.findBganActiveCallsBy_Imsi_Nsapi_Apn(BganActiveCallsServiceImpl.java:22) 
at sun.reflect.GeneratedMethodAccessor282.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96) 
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260) 
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91) 
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
at $Proxy24.findBganActiveCallsBy_Imsi_Nsapi_Apn(Unknown Source) 
at com.mi.persistence.service.callhandler.BganAccessRequestServiceImpl.getPreeptedCalls(BganAccessRequestServiceImpl.java:384) 
at com.mi.taskobjects.externalsigobj.radiusobj.BGANAccessRequest.process(BGANAccessRequest.java:175) 
at com.mi.entities.scheduler.SchWorkerThread.run(SchWorkerThread.java:165) 
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
The last packet successfully received from the server was 19,578 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago. 
at sun.reflect.GeneratedConstructorAccessor66.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1127) 
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3715) 
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3604) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4155) 
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) 
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) 
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838) 
at com.mysql.jdbc.LoadBalancedMySQLConnection.execSQL(LoadBalancedMySQLConnection.java:159) 
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) 
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2212) 
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76) 
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208) 
at org.hibernate.loader.Loader.getResultSet(Loader.java:1953) 
at org.hibernate.loader.Loader.doQuery(Loader.java:802) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274) 
at org.hibernate.loader.Loader.doList(Loader.java:2533) 
... 42 more 
Caused by: java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. 
at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:3161) 
at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:3615) 
... 56 more 
Apr 24, 2014 2:13:13 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run 
WARNING: com[email protected]18138d9 -- APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks! 
Apr 24, 2014 2:13:13 PM com.mchange.v2.async.ThreadPoolAsynchronousRunner$DeadlockDetector run 
WARNING: com[email protected]18138d9 -- APPARENT DEADLOCK!!! Complete Status: 
Managed Threads: 3 
Active Threads: 3 
Active Tasks: 
    com.mchange.[email protected]2dbdcf (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2) 
    com.mchange.[email protected]1088a28 (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1) 
    com.mchange.[email protected]1a67efd (com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0) 
Pending Tasks: 
    com.mchange.[email protected]1db547d 
    com.mchange.[email protected]87fa45 
    co[email protected]13fcd69 
    [email protected]d 
    com[email protected]b198d1 
    [email protected]1 
    com[email protected]1c5be25 
    [email protected]6 
    com[email protected]1654503 
    [email protected]4 
    com[email protected]12f893d 
    [email protected]0 
    com.mchange.v2.r[email protected] 
    [email protected] 
    com[email protected]1c6fb4f 
    [email protected] 
    com[email protected]d843e0 
    [email protected]04b76 
    com.mcha[email protected]18a408c 
    com.mcha[email protected]193e4a4 
    com.mcha[email protected]87d60d 
    com.mcha[email protected]1f6002a 
    com.mcha[email protected]184e113 
    com.mcha[email protected]d4bbb0 
    com.mcha[email protected]6e4a4c 
    com.mcha[email protected]cfc9f4 
    com.mcha[email protected]1d3c0f3 
    com.mcha[email protected]120989c 
    com.mcha[email protected]1034f45 
    com.mcha[email protected]497a1b 
    com.mcha[email protected]1ef8e0b 
    com.mcha[email protected]568dc9 
    com.mcha[email protected]76bb9c 
Pool thread stack traces: 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2,5,main] 
    java.lang.Thread.sleep(Native Method) 
    com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2396) 
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2326) 
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832) 
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) 
    sun.reflect.GeneratedConstructorAccessor27.newInstance(Unknown Source) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.createConnectionForHost(LoadBalancingConnectionProxy.java:383) 
    com.mysql.jdbc.RandomBalanceStrategy.pickConnection(RandomBalanceStrategy.java:75) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.pickNewConnection(LoadBalancingConnectionProxy.java:711) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.dealWithInvocationException(LoadBalancingConnectionProxy.java:415) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:654) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:549) 
    $Proxy22.ping(Unknown Source) 
    com.mysql.jdbc.ReplicationConnection.ping(ReplicationConnection.java:986) 
    sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    com.mchange.v2.c3p0.impl.NewProxyConnection.rawConnectionOperation(NewProxyConnection.java:1315) 
    com.mysql.jdbc.integration.c3p0.MysqlConnectionTester.activeCheckConnection(MysqlConnectionTester.java:78) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:368) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishResourceOnCheckin(C3P0PooledConnectionPool.java:301) 
    com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnCheckin(BasicResourcePool.java:1606) 
    com.mchange.v2.resourcepool.BasicResourcePool.access$200(BasicResourcePool.java:32) 
    com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask.run(BasicResourcePool.java:1228) 
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#1,5,main] 
    java.lang.Thread.sleep(Native Method) 
    com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2396) 
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2326) 
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832) 
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) 
    sun.reflect.GeneratedConstructorAccessor27.newInstance(Unknown Source) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.createConnectionForHost(LoadBalancingConnectionProxy.java:383) 
    com.mysql.jdbc.RandomBalanceStrategy.pickConnection(RandomBalanceStrategy.java:75) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.pickNewConnection(LoadBalancingConnectionProxy.java:711) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.dealWithInvocationException(LoadBalancingConnectionProxy.java:415) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:654) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:549) 
    $Proxy22.ping(Unknown Source) 
    com.mysql.jdbc.ReplicationConnection.ping(ReplicationConnection.java:986) 
    sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    com.mchange.v2.c3p0.impl.NewProxyConnection.rawConnectionOperation(NewProxyConnection.java:1315) 
    com.mysql.jdbc.integration.c3p0.MysqlConnectionTester.activeCheckConnection(MysqlConnectionTester.java:78) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:368) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishResourceOnCheckin(C3P0PooledConnectionPool.java:301) 
    com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnCheckin(BasicResourcePool.java:1606) 
    com.mchange.v2.resourcepool.BasicResourcePool.access$200(BasicResourcePool.java:32) 
    com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask.run(BasicResourcePool.java:1228) 
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) 
Thread[com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#0,5,main] 
    java.lang.Thread.sleep(Native Method) 
    com.mysql.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:2396) 
    com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2326) 
    com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:832) 
    com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46) 
    sun.reflect.GeneratedConstructorAccessor27.newInstance(Unknown Source) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    com.mysql.jdbc.Util.handleNewInstance(Util.java:409) 
    com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:417) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.createConnectionForHost(LoadBalancingConnectionProxy.java:383) 
    com.mysql.jdbc.RandomBalanceStrategy.pickConnection(RandomBalanceStrategy.java:75) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.pickNewConnection(LoadBalancingConnectionProxy.java:711) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.dealWithInvocationException(LoadBalancingConnectionProxy.java:415) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:654) 
    com.mysql.jdbc.LoadBalancingConnectionProxy.invoke(LoadBalancingConnectionProxy.java:549) 
    $Proxy22.ping(Unknown Source) 
    com.mysql.jdbc.ReplicationConnection.ping(ReplicationConnection.java:986) 
    sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source) 
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    java.lang.reflect.Method.invoke(Method.java:597) 
    com.mchange.v2.c3p0.impl.NewProxyConnection.rawConnectionOperation(NewProxyConnection.java:1315) 
    com.mysql.jdbc.integration.c3p0.MysqlConnectionTester.activeCheckConnection(MysqlConnectionTester.java:78) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.testPooledConnection(C3P0PooledConnectionPool.java:368) 
    com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.refurbishResourceOnCheckin(C3P0PooledConnectionPool.java:301) 
    com.mchange.v2.resourcepool.BasicResourcePool.attemptRefurbishResourceOnCheckin(BasicResourcePool.java:1606) 
    com.mchange.v2.resourcepool.BasicResourcePool.access$200(BasicResourcePool.java:32) 
    com.mchange.v2.resourcepool.BasicResourcePool$1RefurbishCheckinResourceTask.run(BasicResourcePool.java:1228) 
    com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547) 

..
감사합니다,
Parimal

답변

2

를 제발 올바른, 스택 트레이스를 다음 얻을 c3p0은 체크인시 Connections를 테스트하고 있습니다. 이러한 테스트는 매달려 있으며, 예외없이 성공하거나 실패하지 않으며, 결과적으로 스레드 풀을 교착 상태에 빠뜨리고 교착 상태가됩니다.

내가 대답 할 수없는 질문은 왜 연결 테스트가 걸려 있는지입니다. 스택 트레이스에서 자신이하려는 일은 재 연결되는 것인데, 복제 된 (슬레이브) 서버에 대한 것임을 분명히 알 수 있습니다. 대신 재 연결이 실패하고 쓰레드가 잠들고 있습니다. mysql의 ConnectionImpl 클래스에 대한 소스를 보면 connectWithRetry는 initialTimout 초 (기본값 2)를 종료하고 maxReconnects 시간 (기본값 3)까지 재 시도합니다. 기본적으로 이는 최대 6 초 동안 중단되어야 함을 의미합니다. 그래도 이보다 오래 걸릴 수 있습니다.

한 가지 해결 방법은 autoReconnect = false로 설정하는 것입니다. 그러면 연결 테스트가 실패 할 것입니다. c3p0은 페일 오버 서버에서 성공적으로 성공할 수있는 새 Connection을 얻으려고 시도합니다.

시도해야 할 다른 사항은 initialTimeout 및 maxConnects를 줄여 오류를 빠르게 처리하는 것입니다. 내부 재 연결에 실패하면 c3p0은 페일 오버 서버를 가리켜 야하는 작동하지 않는 연결을 다시 가져옵니다.

궁극적으로 다음과 같은 몇 가지 알 수없는 점이 있습니다. (1) 복제 서버, 연결이 다시 연결되어 실행중인 서버입니까? 명확한 문제는 실패 할 때 mysql 드라이버가 새로운 연결을 설정하지 못하는 것이므로 실제 질문은 com.mysql.jdbc.ReplicationDriver가 보급 된대로 작동하지 않고 대체 서버에 연결하는 이유입니다. 한 가지 가능성은 대체 서버에 문제가 있다는 것입니다. 직접 [jdbc : mysql : //192.168.102.23/hhmefep]에 연결할 수 있는지 확인하십시오. 그렇지 않다면 그것은 당신의 문제입니다! (2) alt 서버에 연결할 수 있다면 connectWithRetries (...) 이전의 failover 논리가 실제로 작동하는지, 즉 복제 된 서버에 연결하려고하는지 여부를 여전히 알 수 없습니까? (할 가치가있을 수있는 한 가지는 의도적으로 복제 된 서버를 종료하여 장애 조치가 전혀 발생하지 않도록하는 것입니다. 응용 프로그램이 더 완벽하게 실패합니까?)

실용적인 문제로 복제 서버가 작동하는지 확인하고 initialTimout and maxReconnects (아마 1과 1)을 줄이고 다시 시도하십시오. 그래도 작동하지 않으면 autoReconnect를 false로 설정합니다. autoReconnect를 false로 설정하면 c3p0 매개 변수 maxConnectionAge을 사용하여 주 서버가 돌아 왔을 때 연결이 곧바로 마스터로 다시 연결되도록 대체 할 수 있습니다. maxCoonnectionAge를 몇 분 (몇 초가 아님)으로 설정하십시오. 그렇지 않으면 연결이 끊어져 성능이 저하됩니다.

행운을 빈다!

+0

나는 (1) initialTimeout 및 maxReconnects를 1로 줄이고 (2) autoReconnect = false 및 maxConnectionAge = 600 초로 설정하는 두 가지 방법을 시도했다. 그러나 여전히 운전자의 성능은 개선되지 않고 있습니다. 나는 또한 hazelcast 캐시에서 '2014년 4월 25일 오후 3시 36분 34초 com.mi.persistence.model.network.Ggsn 경고 메시지 경고를 받고 있습니다 : [192.168.6.192] : 5701 [NY-HHMEA을 ] [3.2-RC2] 캐시 잠금을 얻을 수 없습니다. ' –

+0

이 [블로그 게시물] (https://blogs.oracle.com/carriergrademysql/entry/how_to_use_jdbc_connector)은 더 나은 결과를 얻는 데 도움이되었습니다. 덕분에 –

+0

! 알아 둘만한. –