使用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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dirsearch使用方法_search函数的使用

    dirsearch使用方法_search函数的使用一、安装:Kali下:gitclonehttps://github.com/maurosoria/dirsearchcddirsearch/Windows下:GitHub的下载地址为:https://github.com/maurosoria/dirsearch其中,db文件夹为自带字典文件夹;reports为扫描日志文件夹;dirsearch.py为主程序文件(注:dirsearch程序必须使用python3以上才能运行);安装完成后将目录地址改为主程序解压地址,使用管理员

    2022年10月6日
    2
  • pstack脚本_pstack

    pstack脚本_pstack脚本写入shell文件pstack,直接执行这个脚本pstackpid#!/bin/shiftest$#-ne1;thenecho”Usage:`basename$0.sh`<process-id>”1>&2exit1fiiftest!-r/proc/$1;thenecho”Process$1notfound.”1>&2exit1fi#GDBdoe…

    2025年11月15日
    3
  • python用vscode还是pycharm_菜鸟VS高手

    python用vscode还是pycharm_菜鸟VS高手点击“开发者技术前线”,选择“星标????”在看|星标|留言,真爱作者|SohaibAhmad译者|鹿未来,责编|屠敏也许是我有些落伍,或者也是因为JetBrains…

    2022年8月28日
    8
  • 多线程死锁的产生以及如何避免死锁

    多线程死锁的产生以及如何避免死锁一、死锁的定义多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力。然而,并发执行也带来了新的问题——死锁。所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。下面我们通过一些实例来说明死锁现象。先看生活中的一个实例,在一条河上有一座桥,桥面很窄,只能容纳一辆汽车通行。如果有两辆汽车分别从桥的左右两端驶上该桥,则会出现

    2022年7月13日
    20
  • mt4交易软件云服务器_MT4交易软件的使用教程及快捷键「建议收藏」

    mt4交易软件云服务器_MT4交易软件的使用教程及快捷键「建议收藏」点击热键F11,客户端转换为全屏模式。在全屏模式下调用功能键使用如下:Ctrl+M-MarketWatch(?市场观察?);Ctrl+N-Navigator(?导航?);Ctrl+T-Terminal(?终端?);Ctrl+D-Datawindow(?数据窗口?).还原一般形态重按热键F11。***选择热键操作可以快速将指标,智能交易或脚本添加到图表中。这种形式在全…

    2022年5月7日
    91
  • php上传文件与图片到七牛的实例详解

    php上传文件与图片到七牛的实例详解

    2021年10月27日
    41

发表回复

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

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