使用hibernate造成的MySql 8小时问题解决方案

使用hibernate造成的MySql 8小时问题解决方案

大家好,又见面了,我是全栈君。

本文借鉴了网上的很多博客,在此不再声明


1.增加 MySQL 的 wait_timeout 属性的值(不推荐)

mysql5之前的版本,可以在jdbc连接的url中加入:autoReconnect = true

设置mysql5中wait_timeout
在linux中最大为365,wait_timeout=31536000
在window中最大为24天,以window为例:

使用hibernate造成的MySql 8小时问题解决方案

这个方法并不推荐,原因:

MySQL服务器所支撑的最大连接数是有限的,因为每一个连接、第一个表打开的操作都要消耗服务器内存,理想状态是当一个MySQL客户端连接完成工作就自动断开释放内存,如果你的你的网站有大量的MySQL链接请求,这些连接完成SQL执行任务后空闲着啥事也不干,白白占用内存资源,如果 这些连接堆积起来,将导致MySQL超过最大连接数,从而无法新建MySQL连接,有可能导致“Too many connections”的错误。
参考自:http://blog.csdn.net/cenfei78325747/article/details/7854611


2.使用连接池(推荐)

(1)无论是使用C3PO还是proxool连接池,一定要去hibernate解压包里找到相应文件夹的jar包,导入:
使用hibernate造成的MySql 8小时问题解决方案

有些人一直解决不了连接池问题,可能原因就在这里
以proxool为例:
(2)配置hibernate.cfg.xml

<session-factory>
<!-- 选择使用连接池 -->
<property name="connection.provider_class">
  org.hibernate.connection.ProxoolConnectionProvider
 </property>
<!-- 指明要使用的proxool.xml中定义的proxool别名 -->
<property name="proxool.pool_alias">mysql</property>
<!-- 指明Proxool配置文件所在位置,这里与Hibernate的配置文件在同一目录下 -->
<property name="proxool.xml">proxool.xml</property>

..............

</session-factory>

(3)在同一目录下配置proxool.xml

<?xml version="1.0" encoding="UTF-8"?>
<proxool>
<!-- proxool别名 -->
<alias>mysql</alias>
<!-- 数据库连接Url -->
<driver-url>
<![CDATA[jdbc:mysql://localhost:3306/work?useUnicode=true&characterEncoding=UTF-8]]>
</driver-url>
<!-- JDBC驱动名称 -->
<driver-class>com.mysql.jdbc.Driver</driver-class>
<!-- 数据库连接帐号 -->
<driver-properties>
<!--这里改成你自己的-->
<property name="user" value="root" />
<property name="password" value="password" />
</driver-properties>
<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁 -->
<house-keeping-sleep-time>60000</house-keeping-sleep-time>
<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受 -->
<maximum-new-connections>100</maximum-new-connections>
<!-- 最少保持的空闲连接数 -->
<prototype-count>3</prototype-count>
<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new- connections决定 -->
<maximum-connection-count>20</maximum-connection-count>
<!-- 最小连接数 -->
<minimum-connection-count>3</minimum-connection-count>
<!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 -->
<test-before-use>true</test-before-use>
<test-after-use>true</test-after-use>
<!-- 用于测试的SQL语句 -->
<house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql>
</proxool>
</something-else-entirely>

参考:http://blog.csdn.net/u012377333/article/details/50600173

转载于:https://www.cnblogs.com/yueshutong/p/9381604.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108228.html原文链接:https://javaforall.net

(0)
上一篇 2022年3月6日 上午11:00
下一篇 2022年3月6日 上午11:00


相关推荐

  • data pipeline是做什么_pycharm创建爬虫项目

    data pipeline是做什么_pycharm创建爬虫项目一.保存至MongoDBimportpymongoclassMongoPipeline(object):#初始化参数def__init__(self,mongo_uri,mongo_db):self.mongo_uri=mongo_uriself.mongo_db=mongo_db#以依赖注入的…

    2025年11月17日
    6
  • 在线作图|2分钟做Lefse分析「建议收藏」

    在线作图|2分钟做Lefse分析「建议收藏」​Lefse分析Lefse(LDAEffectSize)分析是一种用于发现和解释高维度数据的基因、通路和分类单元相关等生物标识的分析工具,通常可以进行两个或多个分组的比较,能够找出组与组之间有差异的生物标识。在微生物多样性分析中,Lefse可用来分析微生物的组间差异,如菌群差异等等。TUTUCLOUD云平台提供在线做Lefse分析的工具,可获得LDA值分布柱状图以及特征表。TUTU网站工具使用小编给大家介绍一个在线作图工具,lefse分析方法如下:①登录网址:www.cloudtutu.com

    2022年4月30日
    77
  • 5分钟搞懂MySQL – 行转列

    5分钟搞懂MySQL – 行转列  MySQL行转列,对经常处理数据的同学们来说,一定是不陌生的,甚至是印象深刻,因为它大概率困扰到了你,让你为之一愣~但当你看到本文后,这个问题就不在是问题,及时收藏,以后谁再问你这个问题,直接甩他脸上,粘贴即用。

    2022年5月1日
    43
  • Chain of Responsibility职责链[通俗易懂]

    Chain of Responsibility职责链[通俗易懂]职责链 Chain of Responsibility动机模式定义实例结构要点总结笔记动机在软件构建过程中,一个请求可能被多个对象处理.但是每个请求在运行时只能有一个请求者.如果显示指定.将必不可少地带来请求发送者与接收者地紧耦合如何使请求地发送者不需要指定具体地接收者?让请求地接收者自己在运行时决定来处理请求,从而使两者解耦模式定义使多个对象都有机会处理请求 从而避免请求地发送者和接收者之间地耦合关系.将这些对象形成一条链.并沿着这条链传递请求.直到有一个对象处理它为止实例#include&

    2022年8月9日
    6
  • 什么是转发和重定向转发_转发和重定向的相同点

    什么是转发和重定向转发_转发和重定向的相同点通过代码和图解详细解释转发和重定向的区别。最后得出结论!

    2025年10月1日
    4
  • 如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」

    如何搭建自己的SpringBoot源码调试环境? SpringBoot源码(一)「建议收藏」1前言这是SpringBoot2.1源码分析专题的第一篇文章,主要讲如何来搭建我们的源码阅读调试环境。如果有经验的小伙伴们可以略过此篇文章。2环境安装要求IntelliJIDEAJDK1.8Maven3.5以上3从github上将SpringBoot源码项目下载下来首先提供SpringBoot2.1.0的github地址:点这里下载因为要进行阅读源码和分析源码项目,我们是不是要在里面写一些注释帮助我们阅读理解源码,因此需要将SpringBoot源码项目fork到自己的github

    2022年5月8日
    102

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号