首先连接从Prestashop到Google Cloud SQL总是失败的



我正在设置开发服务器上的PrestAshop安装,该开发服务器是GCE实例,并使用Cloud SQL作为数据库服务器。除了一件事外,一切都很好:每当网站上有长期不活动时,首页加载之后总是会给我这个错误:

无法建立到数据库的链接:sqlstate [hy000] [2003]

如果我刷新页面,则错误已经消失了,直到我停止使用该站点一个小时左右之前,才会再次出现。看起来数据库实例正在进入睡眠模式或类似的类似。

我提到的prestashop的原因是,我在使用Adminer或从MySQL控制台客户端连接到数据库时永远不会遇到此错误。

使用每个使用计费模型,实例在超时15分钟后旋转以节省您的钱。然后,他们需要几秒钟的时间才能旋转。可能是Prestashop在这些第一个请求中提出时机(尽管我没有该应用程序的经验)。

尝试将您的实例更改为包含12小时超时的软件包帐单,以查看是否有帮助

https://developers.google.com/cloud-sql/faq#how_usage_calculation

根据GCE文档,

一旦建立了一个实例的连接,在该连接上都允许在两个方向上进行流量,直到连接在10分钟后的连接时间

我怀疑这可能是原因。为了解决它,您可以尝试降低TCP的存储时间。

请参阅此处:https://cloud.google.com/sql/docs/compute-engine-angine-access

要保持长期未使用的连接,您可以设置TCP Keepalive。以下命令将TCP KeepAlive值设置为一分钟,并在实例重新启动中永久性配置。

# Display the current tcp_keepalive_time value.
$ cat /proc/sys/net/ipv4/tcp_keepalive_time
# Set tcp_keepalive_time to 60 seconds and make it permanent across reboots.
$ echo 'net.ipv4.tcp_keepalive_time = 60' | sudo tee -a /etc/sysctl.conf
# Apply the change.
$ sudo /sbin/sysctl --load=/etc/sysctl.conf
# Display the tcp_keepalive_time value to verify the change was applied.
$ cat /proc/sys/net/ipv4/tcp_keepalive_time

相关内容

  • 没有找到相关文章

最新更新