我目前正在开发一个访问MySQL的Google Cloud Run web应用程序,遇到了一个无法复制的错误。我第一次遇到这个问题是在早上打开应用程序过夜后刷新它。
这是错误消息:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:从服务器成功接收的最后一个数据包是236899325毫秒前。最后一个成功发送到服务器的数据包是在236899326毫秒前。比服务器配置的值"wait_timeout"长。在应用程序中使用之前,应考虑过期和/或测试连接有效性,增加服务器配置的客户端超时值,或使用连接器/J连接属性"autoReconnect=true"来避免此问题。
我知道这个问题的原因很可能是数据库连接在我的应用程序像这个线程中那样运行之前超时。
我打算添加一个标志,通过编辑本线程中描述的云MySQL实例来增加等待时间,希望能解决这个问题。
我想复制这个问题,这样我就可以评估我想要的解决方案在未来是否可行,但我还没有找到复制类似超时的好答案。
在谷歌云平台中,我尝试停止并重新启动与我的应用程序通信的数据库,但这并没有重现错误。
有人遇到过类似的问题吗?如果是这样的话,我该如何在不需要等待一夜的情况下重新创建错误?
您应该实现一个重试系统,而不是试图复制连接问题。我会尝试在我的应用程序中实现指数后退,作为实现这一点的第一种方法。
尝试复制错误的问题是,您可能无法再次准确地获得此错误,因为这可能是由于您无法控制的因素造成的。
我希望你觉得这些信息有用。