0

1 년이 지난 후 Google App Engine에 백엔드 프로젝트를 게시했으며 모두 양호한 것으로 보입니다. 1 주일 전이 예외가 로그에 가끔씩 (항상은 아님)통신 링크 실패 Google Cloud SQL에 연결할 때 AppEngine에서 오류가 발생하는 경우

내부 예외 : com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : 통신 링크 실패

마지막에게 클라우드 SQL에서 JPA 선택 쿼리를 실행하고, 때로는 쿼리가 단지 성공적으로 결과를 반환하는 동안 패킷이 성공적으로 서버로부터 수신 된 시간은 309,979 밀리 초 전입니다. 마지막으로 서버에 보낸 패킷은 309,981 밀리 초 전입니다.
오류 코드 : 0
전화 : SELECT ID, created_time, 통화, IP, country_table 쿼리에서 NAME : ReadAllQuery (이름 = "Country.findAll"referenceClass = 국가 SQL = "ID, created_time, 통화, IP, 이름을 선택 때로는

와) "country_table FROM이 예외는 일부 쿼리가 실행되는 정지된다

성공적으로 서버에서받은 마지막 패킷은 219,443 밀리 초 전이었다. 마지막으로 서버에 보내진 패킷은 219,446 밀리 초 전이었습니다. 자바에서 sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:57) 에서
sun.reflect.DelegatingConstructorAccessorImpl.newInstance에서 sun.reflect.NativeConstructorAccessorImpl.newInstance0 (기본 방법) (DelegatingConstructorAccessorImpl.java:45) 에서
.lang.reflect.Constructor.newInstance (Constructor.java:44) com.mysql.jdbc.Util.handleNewInstance (Util.java:411) com.mysql.jdbc.SQLError.createCommunicationsException (SQLError.java:1117)) com.mysql.jdbc.MysqlIO.send (MysqlIO.java:3851) com.mysql.jdbc.MysqlIO.sendCommand .java : 2651)com.mysql.jdbc.ConnectionImpl.execSQL에서(ConnectionImpl.java:2739) com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:2149)에서 에서 com.mysql.jdbc.PreparedStatement.executeQuery (PreparedStatement. 자바 : 2313) org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeSelect (DatabaseAccessor.java:1007) 에서 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall (DatabaseAccessor.java:642) 에서의 org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall (DatabaseAccessor.java:558) at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall (AbstractSession.java:2002) at org.eclipse.persistence. sessions.server.ServerSession.executeCall (ServerSession.j AVA : 570) org.eclipse.persistence.sessions.server.ClientSession.executeCall (ClientSession.java:250에서 )

+0

필자는 autoReconnect, interactiveClient, maxReconnects, failOverReadOnly와 같은 JPA 연결 문자열에 매개 변수를 추가하는 것과 같은 거의 모든 솔루션을 적용했습니다. 그러나 오류는 계속 발생하며 모든 요청이 나에게옵니다. 새로운 엔티티 관리자 그리고 바로 닫습니다. –

답변

0

MySQL이 연결을 종료하기 때문이다.

아마도 JPA는 자동으로 데이터베이스에 다시 연결됩니다. 트랜잭션 결과가 올 바르면이 메시지를 무시할 수 있습니다.

또는 개발자 콘솔에서 연결을 닫을 때까지 interactive_timeoutwait_timeout으로 타이머를 연장 할 수 있습니다. 이렇게하면 메시지를 줄일 수 있습니다.

+0

예, 당신은 절대적으로 옳았습니다, 거래 결과는 정확합니다! 그러나 갑자기이 오류가 던져지기 시작한 이유는 무엇입니까? 개발자 콘솔에서 어떻게 할 수 있습니까? –

+0

개발자 콘솔에서 인스턴스를 선택한 다음 EDIT -> 데이터베이스 플래그 추가 -> 항목 추가를 선택하십시오. 'interactive_timeout'과'wait_timeout'을 선택하고 값을 설정하십시오. 기본값은 28800 (8 시간)입니다. 이보다 큰 값을 설정하여 타이머를 확장 할 수 있습니다. 그런 다음 '저장'을 누릅니다. –

+0

고맙습니다. :) 그러나이 메시지가 최근에 인쇄를 시작하게하는 원인을 이해해야합니다. 모든 시간 초과 값은 기본값이며 만지지 않습니다. –