Я использую Google Cloud SQL с использованием машинного типа db-f1-micro для проекта, развернутого в Google App Engine в стандартной среде (JAVA). Иногда при подключении к базе данных я получил ошибку ниже. Этот сценарий возникает при одновременной открытии одной и той же страницы на нескольких вкладках (тестирование нагрузки/производительности).
Исходный код, используемый в проекте с https://github.com/GoogleCloudPlatform/appengine-cloudsql-native-mysql-hibernate-jpa-demo-java
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 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.NativeConstructorAccessorImpl.newInstance0 (Native Method)
Показатели из журнала движка приложений для ошибок и использования mysql. Вы можете легко увидеть, что использование активного подключения mysql ниже 100%.
Пожалуйста, предложите, что я делаю неправильно?
Похоже, этот поток старый, но у нас есть проблема в нашей тестовой среде. Это происходит часто и неоднократно после того, как наша тестовая система GAE некоторое время не используется. В первый раз, когда кто-то пытается получить доступ к приложению, мы получаем один или два из них.
Я предполагаю, что это как-то связано с расширением GAE экземпляра сервера. Хотя я не уверен, почему это происходит с БД. Я не думаю, что у нас есть какой-либо пул соединений (в частности, потому что GAE может сделать наше приложение бездействующим).
И поскольку приложение только запускается, мы не можем превышать какие-либо ограничения на подключение.
На странице https://cloud.google.com/appengine/docs/standard/java/cloud-sql/pricing-access-limits
"У каждого экземпляра App Engine не может быть более 12 одновременных подключений к экземпляру Google Cloud SQL".
Сколько запросов отправляется в App Engine и сколько соединений открывает экземпляр приложения для каждого из этих запросов?