Grails 和 MySQL 连接异常

2023-11-30

我有一个正在生产中的 Grails 应用程序。今天早上我收到警报,发现服务器无法解析。雄猫不停地旋转。我研究了一下,看起来这与 MySQL 导致连接在 8 小时不活动后超时有关。我在 stackoverflow 上找到了例子有类似问题的人。然而,所有这些人都提到,如果他们再次访问服务器并且连接被刷新。对我来说,该网站完全瘫痪了,Tomcat 也没有响应。听起来是不是还有其他事情在起作用?

Tomcat 日志中的最后一个异常

2011-Aug-30 23:58:43,283 [TP-Processor19] org.hibernate.util.JDBCExceptionReporter
 ERROR The last packet successfully received from the server was 37,118,147 milliseconds ago.  The last packet sent successfully to the server was 37,122,138 milliseconds ago. \
is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing \
the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
2011-Aug-30 23:58:43,290 [TP-Processor19] org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver
 ERROR Exception occurred when processing request: [GET] /picks/ncaafb
Stacktrace follows:
java.net.SocketException: Connection timed out
        at java.net.SocketOutputStream.socketWrite0(Native Method)
        at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
        at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
        at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
        at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
        at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3302)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1940)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2275)
  at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2275)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
        at sportsdb.Season.getCurrentNCAAFootballSeason(Season.groovy:93)
        at PicksController$_closure2.doCall(PicksController.groovy:60)
        at PicksController$_closure2.doCall(PicksController.groovy)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
        at java.lang.Thread.run(Thread.java:662)
2011-Aug-30 23:58:43,315 [TP-Processor19] org.hibernate.util.JDBCExceptionReporter
 ERROR Already closed.
2011-Aug-30 23:58:43,315 [TP-Processor19] org.hibernate.util.JDBCExceptionReporter
 ERROR Already closed.
2011-Aug-30 23:58:43,316 [TP-Processor19] org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet
 ERROR HandlerInterceptor.afterCompletion threw exception
org.hibernate.exception.GenericJDBCException: Cannot release connection
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:774)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:896)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.sql.SQLException: Already closed.
        at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)
        at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.close(PoolingDataSource.java:191)
        at $Proxy7.close(Unknown Source)
        ... 6 more

我的计划是实施上面链接中提到的解决方案,但我想确保没有其他明显可疑的情况发生,因为我们得到了一些不同的结果(他们的连接是刷新的,而我的不是)。


如果您使用的是 Tomcat JNDI 数据源查看一些可以设置的参数在数据源上,例如 testOnBorrow。如果验证失败,连接将从池中删除。测试连接会产生一些性能开销,但它应该可以解决这样的问题。如果您将 minIdle/maxIdle 设置得较高,这可以解释为什么您在重新连接为其他人修复问题时仍然遇到问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Grails 和 MySQL 连接异常 的相关文章

  • 在 MySQL 中分割逗号分隔值

    我正在尝试将字符串中以逗号分隔的 值拆分为多列 样本数据 COL1 COL2 COL3 000002 000003 000042 09 31 51 007 004 007 预期输出 Pno Cno Sno 000002 09 007 000
  • ejabberd 16.06 + mysql 5.5.50,消息历史记录不保存

    我使用ejabberd 16 06 mysql 5 5 50 消息历史记录没有保存 我的 ejabberd yml MySQL server odbc type mysql odbc server freldo odbc port 3306
  • 在共享通用插件的两个 Grails 应用程序之间共享配置

    我们将有两个应用程序 它们都需要使用相同的服务 实用程序 代码 配置 我们使用 grailsApplication config 来配置外部服务的 URL 等内容 根据应用程序是否在 dev test qa staging prod 中运行
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • RMySQL fetch - 找不到继承的方法

    使用 RMySQL 我想将数据从数据库加载到 R 中的数据帧中 为此 我使用以下代码 R连接数据库 con lt dbConnect MySQL user root password password dbname prediction h
  • 更新重复密钥上的复合密钥 [重复]

    这个问题在这里已经有答案了 我需要更新新行 如果两者都满足 date dat and empId who 作为复合键 但如果其中之一或两者不同 则插入 sql INSERT INTO history SET endtimestamp now
  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • #1045 - 用户“root”@“localhost”的访问被拒绝(使用密码:YES)

    这可能看起来多余 但我无法找到正确的解决方案 我无法使用 mysql 控制台登录 mysql 它要求输入密码 但我不知道我实际输入的内容 有办法获取密码或更改密码吗 这就是我的 config inc 的样子 当我尝试打开 phpmyadmi
  • 本地 401 工作,临时服务器得到 302

    我可能不会获得帮助第一次尝试所需的所有信息 但我会尽我所能 并在我们进行过程中对其进行编辑 我有一个使用 Spring Security Core 插件的 Grails 1 3 7 应用程序 我正在编写处理会话超时和 ajax 请求的代码
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • 哪个是识别关系或非识别关系中的子表?

    在表之间的识别和非识别关系的上下文中 MySQL 文档大量将表称为父表和子表 如何判断哪个表是父表 哪个表是子表 子表 A K A 弱实体 http en wikipedia org wiki Weak entity 是一个表 其主键属性d
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 访问 PUT 或 POST 请求的原始正文

    我正在 Grails 中实现 RESTful API 并使用自定义身份验证方案 该方案涉及对请求正文进行签名 以类似于 Amazon 的 S3 身份验证方案的方式 因此 为了验证请求 我需要访问原始 POST 或 PUT 正文内容来计算和验
  • MYSql 前 10 名及其他总计

    我的查询运行良好 但我只需要前 10 个供应商 然后我需要将所有剩余的总计放在 所有其他 行中 如果没有单独的查询 我该如何做到这一点LIMIT 10 18446744073709551615 SELECT VENDOR fullname
  • MySql 从另一个表中减去一个表

    我有两个表 A 包含所有数据 表 B 从 A 中随机选择 25 的数据创建 所以 A 和 B 具有完全相同的列 也没有独特的列 我想做的是从 A 中减去 B 有什么想法吗 查看所有行A除了那些在B SELECT FROM A WHERE f
  • 如何编写 bash 函数来包装另一个命令?

    我正在尝试编写一个函数包装器mysql command If my cnf存在于 pwd 中 我想自动附加 defaults file my cnf到命令 这就是我正在尝试的 function mysql if e my cnf then
  • 1:1 关系中的双向外键约束

    我正在使用 MySQL 数据库 在我的关系数据模型中 我有两个相互 1 1 关联的实体 在我的架构中 通过将 FK 字段放入两个表之一中来建立 1 1 关系 该字段与另一个表的 PK 相关 两个表都有 PK 并且都是自动递增的 BIGINT
  • 有没有办法只安装mysql客户端(Linux)? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有不需要安装整个mysql db安装包的Linux mysql命令行工具 我想做的是从服务器 1 应用程序服务器 执行将在服务器 2
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que
  • MySQL 和 MariaDB 数据库有什么区别?

    我已经使用 XAMPP 很长时间了 很惊讶 XAMPP 已经从 MySQL 切换到了 MariaDB https www apachefriends org index html https www apachefriends org in

随机推荐

  • python正则表达式用于重复字符串

    我想验证然后解析这个字符串 用引号引起来 string start c12354 c3456 34526 other stuff that I don t care about Note that some codes begin with
  • 用负前瞻反应路由器

    基本上我想抓住
  • 如何在Java中调试“java.lang.NumberFormatException:对于输入字符串:X”?

    我正在尝试运行一个程序 我对 Java 真的很陌生 当我运行我的程序时 出现以下异常 Description The server encountered an internal error that prevented it from f
  • Google App脚本:您没有权限调用提示

    我创建了一个谷歌脚本 在编辑列时向我显示一个提示对话框以撰写评论 由于某种原因 这仅适用于我的电子邮件 脚本的创建者 但对我共享电子表格的其他用户不起作用 当我使用其他用户帐户打开脚本编辑器时 我可以在查看 gt 执行脚本 执行失败 您没有
  • 如何在 Piston 类方法中访问 request.user

    我有一个模型 其中包含一个 ManyToMany to User 来跟踪哪些用户 最喜欢 特定的模型实例 在此模型的 API 中 当经过身份验证的用户请求时 我想包含一个 is favorite 布尔值 然而 似乎任何不是直接模型属性的 a
  • C# 中 x+=y 和 x=x+y(x 和 y 都是简单类型)之间有性能差异吗? [复制]

    这个问题在这里已经有答案了 在 C C 中 复合赋值运算符将简单赋值运算符与另一个二元运算符组合起来 复合赋值运算符执行附加运算符指定的运算 然后将结果赋给左侧操作数 例如 复合赋值表达式如 expression1 expression2
  • float 多线图动画

    我在图表上有多个系列 想为它们设置动画 但它不起作用 我正在使用 flot 和 animator 插件 https jsfiddle net shorif2000 L0vtrgc2 var datasets label IT curvedL
  • 将配置文件添加到安装程序 (msi)

    如何将带有特殊的唯一生成令牌的配置文件添加到 msi 文件中 这个想法是 用户注册客户端计算机 安装程序在配置文件中提供唯一值 我读过有关 msidb exe 的内容 但我想知道是否有更好 更干净 更简单的解决方案 有任何想法吗 添加自定义
  • 使用固定大小的可拖动图片框裁剪图像

    我正在开发一个涉及裁剪图像的 winforms 项目 我的目标是通过使用固定大小的可拖动图片框控件来实现此目的 允许用户选择他们想要保留的区域 我的问题是当我裁剪图像时 它 works 但裁剪面积略有偏移 这是我得到的结果 需要澄清的是 我
  • 从代码创建材质并将其分配给对象

    我对 Unity3d 很陌生 我有一个预制件 其中包含 6 个四边形 使其成为一个立方体 我想将图像纹理添加到立方体的不同面 我从网络服务获取图像 因此我必须在脚本中添加或更改材料 我面临的问题是 我无法在游戏对象中找到材质属性 我试过下面
  • 如何在成员方法闭包中使用struct self

    如何在闭包中调用方法 get access token方法可以基于设置新的访问令牌self get base url fn fetch access token base url String gt String String new fn
  • 我需要有关此错误的帮助:java.lang.NoSuchMethodError

    我有这个Java代码 JPA String queryString SELECT b sum v votedPoints as votedPoint FROM Bookmarks b LEFT OUTER JOIN Votes v on v
  • 在 PHP 函数中检索推文中的所有主题标签

    我想使用 PHP 函数从推文中检索所有主题标签 我知道有人问过类似的问题here 但没有提示如何在 PHP 中准确实现这一点 由于我对正则表达式不太熟悉 因此不知道如何编写一个返回推文中所有主题标签的数组的函数 那么我该如何做到这一点 使用
  • 在新线程上执行 Java 回调

    在这个项目中 一个Manager执行事件排队 并使用回调返回事件结果 回调不扩展Runnable 管理器在单独的线程上运行 调度事件 一旦事件终止 同一线程就会调用回调 这意味着在前一个事件的回调终止之前不会调度下一个事件 为了避免这种情况
  • 如何使用 HtmlService 运行服务器端功能

    我是编程新手 我正在尝试使用 Google apps script 与 jQuery 连接几个按钮 我有一个电子表格和一个添加到其中的菜单 可以从 HtmlService 打开一个对话框 在对话框中 我有两个按钮 一个关闭对话框 另一个执行
  • SQL 数据库中的量纲和单位分析

    Problem 存储各种测量值的时间序列数据的关系数据库 Postgres 每个测量值可以具有特定的 测量类型 例如温度 溶解氧等 并且可以具有特定的 测量单位 例如华氏度 摄氏度 开尔文 百分比 毫克每升等 问题 有没有人建立过类似的数据
  • 如何将表格从 HTML 导出到 Excel 并在单元格中排列图像

    我需要将表格从 HTML 导出到 Excel 我的表格由姓名 年龄 日期 金额和带有小图像的图像列组成 我有一个生成 Excel 文档的函数 function downloadsalesreport var cache this tmpl
  • 为什么我在 iPhone X 模拟器的底部看到白色区域?

    我在 stackoverflow 上读过一些答案 比如这个在 iPhone X 模拟器的顶部和底部看到黑条 但似乎有点不同 因为我的问题只发生在屏幕的底部区域 正如我们所看到的 我的loginVC 底部有一个白色区域 我希望我的 UIIma
  • PHP - 如何有效地读取大型远程文件并在循环中使用缓冲区

    我想了解如何使用读取文件的缓冲区 假设我们有一个大文件 其中包含逐行的电子邮件列表 分隔符是经典的 n 现在 我们想要以类似的检查方式将每一行与数据库中表的每条记录进行比较line of file table row 如果您有一个普通文件
  • Grails 和 MySQL 连接异常

    我有一个正在生产中的 Grails 应用程序 今天早上我收到警报 发现服务器无法解析 雄猫不停地旋转 我研究了一下 看起来这与 MySQL 导致连接在 8 小时不活动后超时有关 我在 stackoverflow 上找到了例子有类似问题的人