2014-02-27 102 views
3

我使用jmeter來壓力測試使用CloudSQL的GAE Web服務,並且出現間歇性通信鏈接失敗異常。使用Cloud SQL間歇性通信鏈接失敗

我試過使用直接連接和連接池,並且在任一情況下都會看到異常。隨着每秒請求數量的增加,異常會增加。

請注意,我們正在使用最高層的雲端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

回答

1

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

「每個App Engine實例的Google Cloud SQL實例的併發連接數不能超過12個。」

你能告訴我有關測試設置的更多信息嗎? jmeter向appengine發送多少個請求以及應用程序實例爲每個請求打開了多少個連接?

+0

謝謝! 我無法在當前的App Engine文檔中找到12個併發限制,但它似乎是正確的。我有35個最大的應用程序引擎連接,顯然35個用戶連接有能力超過12個數據庫連接。我將我的應用引擎連接數降至12,而當我的應用引擎實例增加時,我不再看到這個錯誤。 –

0

給每個正在查找爲什麼您可能會在連接上收到「com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信鏈接失敗」的人。

如果您正在從測試服務器進行呼叫,請確保您的IP被允許!

我在一家朋友家裏進行測試,這個無用的錯誤一直在顯示。