使用 c3p0 和 tomcat 与 MySQL 的僵尸连接

2024-03-31

我正在使用 c3p0 来管理与 MySQL 的数据库连接。 问题是某些连接被永远保留。我的连接数限制为 1000 个,但由于某种未知原因,打开的连接数为 1200 个。为了调查它,我在 tomcat 服务器 shell 中执行以下命令:

netstat -n |grep 3306|grep ESTABILISHED|wc -l

它返回 1200

这是 c3p0 配置context.xml

 <Resource name="jdbc/xxxx" auth="Container"
          user="xxxxxx"
          password="xxxxx"
          driverClass="com.mysql.jdbc.Driver"
          jdbcUrl ="jdbc:mysql://xxxx:3306/xxx"
          factory="org.apache.naming.factory.BeanFactory"
          type="com.mchange.v2.c3p0.ComboPooledDataSource"
          maxPoolSize="1000"
          minPoolSize="200"
          numHelperThreads="10"
          acquireIncrement="50"
          maxStatementsPerConnection="0"
          idleConnectionTestPeriod="200"
          maxIdleTime = "1000"
          maxIdleTimeExcessConnections = "180"
          maxStatements="200"
          unreturnedConnectionTimeout="10"
          debugUnreturnedConnectionStackTraces="true"
          />

如果池最大大小为 1000,如何可能建立 1200 个连接? 我的 MySQL 服务器配置为

interactive_timeout 28800
wait_timeout    1300

OBS:我在这个应用程序中没有使用休眠(只是在几个类中)。大多数连接都是通过纯 JDBC 代码建立的。


有几种可能性。

最有可能的是您已将此 Resource 元素放置在$CATALINA_BASE/conf/context.xml该文件为每个 Web 应用程序提供默认的 context.xml。因此,如果您有六个 Web 应用程序,您将有六个连接池。由于最小轮询大小为 200,因此至少将有 200*6=1200 个与数据库打开的连接。

另一种可能性是 Web 应用程序已重新加载。您应该获得一个新的连接池,旧的连接池将被 GC 回收。但是,如果您在重新加载时发生内存泄漏(很容易在没有意识到的情况下发生),它可能会将连接池及其打开的连接保留在内存中,从而增加总连接数。

将定义放入server.xml:

<Server>
  <GlobalNamingResources>
     <Resource name="jdbc/xxxx">...</Resource>
  </GlobalNamingResources>
</Server>

这在context.xml:

  <ResourceLink name="jdbc/xxxx"
      global="jdbc/xxxx"
      type="com.mchange.v2.c3p0.ComboPooledDataSource" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 c3p0 和 tomcat 与 MySQL 的僵尸连接 的相关文章

  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • Java:使用 HttpURLConnection 的 HTTP PUT

    如何执行 HTTP PUT 我正在使用的类似乎认为它正在执行 PUT 但端点将其视为我执行了 GET 我做错了什么吗 URL url new URL https HttpURLConnection conn HttpURLConnectio
  • 如何在 JSP 中导入类?

    我是一个完全的JSP初学者 我正在尝试使用java util List在 JSP 页面中 我需要做什么才能使用除以下类之外的类java lang 使用以下导入语句进行导入java util List 顺便说一句 要导入多个类 请使用以下格式
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • Java 服务器-客户端 readLine() 方法

    我有一个客户端类和一个服务器类 如果客户端向服务器发送消息 服务器会将响应发送回客户端 然后客户端将打印它收到的所有消息 例如 如果客户端向服务器发送 A 则服务器将向客户端发送响应 1111 所以我在客户端类中使用 readLine 从服
  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Spring Security OAuth2简单配置

    我有一个简单的项目 需要以下简单的配置 我有一个 密码 grant type 这意味着我可以提交用户名 密码 用户在登录表单中输入 并在成功时获得 access token 有了该 access token 我就可以请求 API 并获取用户
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • 对象锁定私有类成员 - 最佳实践? (爪哇)

    I asked 类似的问题 https stackoverflow com questions 10548066 multiple object locks in java前几天 但对回复不满意 主要是因为我提供的代码存在一些人们关注的问题
  • 选择获取与 MySQL Group 中 max 对应的整行

    当我使用Max使用后查找特定 MySQL 组中字段的最大值GROUP BY 是否可以获取包含最大值的整行 我在处理一些论坛代码时偶然发现了这个线程 我想获取每个线程的最新帖子并将其显示在特定板的线程列表中 Quassnoi上面的回答对我非常
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • phpActiveRecord 日期时间格式不正确

    当尝试使用 phpActiveRecord 在表中创建记录时 出现以下错误 Invalid datetime format 1292 Incorrect datetime value 2013 06 20 11 59 08 PDT for
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false
  • 在哪里存储 Java 的 .properties 文件?

    The Java教程 http download oracle com javase tutorial essential environment properties htmlon using Properties 讨论如何使用 Prop

随机推荐

  • 在 Mathematica 中查找先前定义的消息

    Mathematica 默认定义了许多有用的消息来表示常见错误 例如使用错误数量的参数调用函数或未找到文件 一般来说 我更喜欢尽可能使用现有的 已定义的消息 因为这样可以更轻松地通过诸如Check Quiet and On Off 然而 我
  • 将应用程序更新到新代码库后,AsyncStorage 是否仍然保留?

    我有一个react native项目中我计划重新编写所有的代码库 新的源代码 我打算使用相同的包 ID 所以我的客户 他们希望用户能够收到有关新应用程序版本的通知 而他们更新后 登录状态将保持 这样用户就不必再次登录 所以我想知道在这种情况
  • Rails 子域路由重定向

    我们无法更改服务器配置文件 因此我们需要在 Rails 级别进行重定向 我对外部站点的路径重定向没有问题 例如 match meow gt redirect http meow com 问题出在子域上 我需要重定向 例如 http my e
  • SPOJ:洗牌

    最近开始解答网上评委的问题 我被困在SPOJ 中的这个问题 http www spoj pl problems CODESPTC 下面是洗 N 张牌的算法 这些牌被分成 K 个相等的牌堆 其中 K 是 N 的因数 底部的 N K 张牌按相同
  • Rails 中的部分 SSL

    我正在寻找在 Rails 中做一个部分 SSL 站点 我基本上想保护 SSL 背后的用户操作 但仅此而已 有人知道有一个插件或 gem 可以让这个变得简单而高效吗 这通常是通过SSL 要求 http github com rails ssl
  • 未收到从 MFMailComposer 发送的附件

    我正在尝试在 iPad 上发送一封带有 csv 附件的电子邮件 我根据下面显示的许多示例使用 MFMailComposer 发送电子邮件时 我可以在 MFMailComposer 窗口中看到正确的文件附件 但是当我收到电子邮件时 没有附加任
  • 创建C# Winform开发生产环境

    我想知道为我的 C winforms 项目正确创建开发和生产环境的最佳方法是什么 不幸的是没有开发环境 相反 每次我希望创建生产或开发版本时 我都必须指定发布路径 此外 由于每个产品或开发版本都使用不同的连接字符串 因此我也必须进入代码并更
  • 错误NG6002:出现在AppModule的NgModule.imports中,但本身有错误

    我在本地和建筑项目中有 Angular 12 它运行良好 没有任何错误 我的本地设置 Angular CLI 12 0 5 Node 12 16 3 Package Manager npm 6 14 4 OS win32 x64 Angul
  • 我可以从存储过程返回 varchar(max) 吗?

    带有 SQL Server 2005 后端的 VB net Web 系统 我有一个返回 varchar 的存储过程 但我们最终得到的值不适合 varchar 8000 我已将返回参数更改为 varchar max 但如何告诉 OleDbPa
  • SQL Server 找出表何时被重命名?

    是否可以查出表何时被重命名 作为首要问题 如果可能的话 是哪个用户干的 你可以试试这个 SELECT Name modify date FROM sys all objects WHERE Name Table name
  • 传递不带等号的查询字符串参数(值为空)是否有效?

    变化1 file jsp parameter1 parameter2 abc 变化2 file jsp parameter1 parameter2 abc 我知道变体 1 被认为是有效的 但是变体 2 被认为是有效的吗 具体来说 参数没有值
  • 使用 zope.schema 定义循环引用

    我正在尝试执行以下操作 定义两个类 其实例相互引用 例如以下示例中的用户和组 一个用户可以属于多个组 一个组可以包含多个用户 实际数据存储在数据库中 这是使用外键的多对多关系的简单问题 完全没问题 然后 数据通过 ORM 加载并存储在 py
  • Google Cloud Builder - Gradle

    继以下帖子后https cloudplatform googleblog com 2017 03 Google Cloud Container Builder a fast and flexible way to package your
  • 是否可以在 Vercel 中部署 NodeJs 应用程序?

    我正在尝试在 Vercel https vercel com https vercel com 之前的 Now 来自 CLI 但是 当我部署应用程序时 我打开站点 结果只是路径目录中的文件 而不是正在运行的应用程序 这是我的server j
  • 最简单的通过鼠标旋转相机不起作用

    好吧 这让我发疯 文档非常薄弱 Oracle 的示例应用程序非常奇怪 有一个巨大而复杂的帮助程序类 甚至这里的有关它的问题也没有答案 我基本上遵循并简化了本教程 https www genuinecoder com javafx 3d tu
  • .ogg 视频无法在 Firefox 中播放

    我们刚刚开始使用 html5 视频 似乎无法得到 ogg要在 Firefox 中播放文件 有什么提示吗 这是我们正在使用的来源
  • Objective C 中如何将字符串转换为数组?

    如何在 Objective C 中将字符串转换为数组 即 我有一个字符串 NSString str Hi How r u 这应该转换为数组 NSMutableArrayarr 其中 arr 0 嗨 arr 1 arr 2 如何 arr 3
  • 如果依赖项位于 false 分支语句内,则计算将永远停止触发

    我遇到一个问题 即我的计算可观察量在一系列依赖项更改后停止触发 最后我发现了一点 如果在最近一次评估期间依赖项位于错误分支语句内 则下次将不会触发计算即使在评估完成之前条件变为真 这是一个示例 https jsfiddle net sgs2
  • 非静态方法 next() 不能从静态上下文中引用

    我正在尝试解析一个mm dd yyyy将日期格式化为单独的字段 但是当我尝试编译时出现以下错误 非静态方法 next 不能从静态上下文中引用 什么可能导致错误 import java util Scanner public class Pr
  • 使用 c3p0 和 tomcat 与 MySQL 的僵尸连接

    我正在使用 c3p0 来管理与 MySQL 的数据库连接 问题是某些连接被永远保留 我的连接数限制为 1000 个 但由于某种未知原因 打开的连接数为 1200 个 为了调查它 我在 tomcat 服务器 shell 中执行以下命令 net