使用Cloud SQL的间歇性通信链路故障

时间:2014-02-27 20:54:59

标签: google-app-engine jmeter google-cloud-sql

我正在使用jmeter对使用CloudSQL的GAE Web服务进行压力测试,并且我遇到了间歇性的通信链路故障异常。

我尝试过使用直接连接和连接池,在任一情况下都会看到异常。随着每秒请求数量的增加,异常会增加。

请注意,我们使用的是最高层的云sql,D32,并且测试完全在最大3200连接之下。

这是一个堆栈跟踪供参考:

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.GeneratedConstructorAccessor48.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:33)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1117)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:350)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2413)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2450)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2235)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:818)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.GeneratedConstructorAccessor46.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:33)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:404)
at com.mysql.jdbc.GoogleNonRegisteringDriver$JdbcWrapper.getInstance(GoogleNonRegisteringDriver.java:276)
at com.mysql.jdbc.GoogleNonRegisteringDriver.connect(GoogleNonRegisteringDriver.java:246)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)

更新:我将连接池设置更改为maxActive = 5和maxIdle = 5,间歇性通信链接异常消失。请注意,我已经尝试过commons dbcp和tomcat dbcp。我现在在日志中看到以下例外:

引起:java.sql.SQLException:java.lang.SecurityException:无法访问gatherPerformanceMetrics

引起:java.sql.SQLException:java.lang.SecurityException:无法访问includeThreadDumpInDeadlockExceptions

引起:java.sql.SQLException:java.lang.SecurityException:无法访问nullNamePatternMatchesAll

2 个答案:

答案 0 :(得分:1)

来自https://cloud.google.com/appengine/docs/java/cloud-sql/#Java_Size_and_access_limits

“每个App Engine实例与Google Cloud SQL实例的并发连接数不能超过12个。”

您能详细介绍一下测试设置吗? jmeter发送到appengine的请求有多少,app实例为每个请求打开了多少个连接?

答案 1 :(得分:0)

向所有正在寻找你可能获得的人&#34; com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通讯链接失败&#34;在连接上。

如果您是从测试服务器拨打电话,请确保您的IP已被允许!

我在朋友家测试,这个无益的错误不断出现。