我是Google Cloud的新手并且一般都在运行应用程序。我目前在Google Flexible App Engine上的Docker容器中运行了一个Django应用程序,该应用程序连接到同一项目中的Google Cloud SQL(PostgreSQL)实例。最新版本已经运行了大约3天,现在没有问题。
今天我开始从应用程序反复接收OperationalError: server closed the connection unexpectedly
错误。我可以运行Cloud SQL Proxy并且它正常启动(Ready for new connections
),但如果我尝试连接psql,我收到错误:
psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
代理报告:
couldn't connect to "<instance_name>:us-central1:<instance_name>":
dial tcp <ip address>:3307: connect: connection refused
在SSH连接到我正在运行的Flex应用程序实例并运行sudo docker logs <cloud proxy container>
时,最后一行是类似的:
couldn't connect to "<instance_name>:us-central1:<instance_name>":
dial tcp <ip address>:3307: getsockopt: connection refused
任何帮助都会受到赞赏,此时我已经没有想法了。谢谢!
我首先重新启动了Cloud SQL实例。这没有用。然后,我只是单击“停止”为SQL实例,一旦它,点击“开始”,现在它的工作原理。这是非常随机和烦人的。
在我的情况下,我在当天早些时候升级了SQL实例的机器类型,似乎这样做,谷歌云只是“重新启动”实例,其中所需的是“停止”然后“开始”。这只是猜测。
tl; dr停止然后启动Cloud SQL实例。不要重新启动为“重启”!=“停止+启动”
希望它可以帮助那些面临这个随机问题的人。
我们最终通过回滚到早期备份来“修复”问题。 Google支持人员注意到“问题是围绕您的Cloud SQL实例的维护窗口启动的,因此可能会发生导致连接中断的更改”。
如果CloudSQL实例仅配置了专用IP地址,这也可能是一个问题。每个隐藏在文档中的小段落:
代理不提供新的连接路径;它依赖于现有的IP连接。例如,除非代理使用已配置为私有服务访问的VPC网络,否则不能使用代理连接使用专用IP的实例。
在这种情况下,唯一的解决方案似乎是向服务器添加公共IP。