开发者社区> 问答> 正文

【阿里云解决方案】安装mysql5.5以上的经常会发现网站访问不到数据库

最近群里经常有人问:我安装的mysql怎么经常宕机,出现网站访问不到数据库。
mysql宕机主要有两个原因:
1.内存被其它进程大量占用,或数据库本身数据量太大导致mysql宕机
2.程序访问mysql后没有执行mysql.close,大量占用资源导致宕机。

群里提出的这个问题主要是mysql5.5以上的,基本上不是mysql宕机。因为5.5以上的数据库会有个链接超时配置。
默认是28800秒也就是8个小时,会断开连接。
解决方案:
1.修改mysql配置。
如果是linux服务器编辑mysql.cnf   执行vi /etc/mysql.cnf
找到[mysqld] 在底下添加
interactive_timeout=28800000
wait_timeout=28800000
多加了三个0  也就是8000个小时。基本就不用考虑连接超时
修改完配置后,记得重启mysql服务。

2.程序方面。
以java程序为例(抱歉只会java)
打开Spring配置文件,修改applicationContext.xml
在datasource bean底下添加
用来指定测试连接所使用的SQL语句。
如果测试发现连接已经close,那么将自动重建连接。
<property name="houseKeepingTestSql">  
<value>SELECT 1</value>
</property>
用来指定在使用连接之前要进行测试。
<property name="testBeforeUse">  
<value>true</value>  
</property>


希望对大家有所帮助,讨论群http://url.cn/KLZKN9




展开
收起
自娱自乐 2014-04-21 09:44:16 14128 0
8 条回答
写回答
取消 提交回答
  • LT是个伪程序员
    不顶不舒服斯基
    2014-04-29 17:45:28
    赞同 展开评论 打赏
  • Re【阿里云解决方案】安装mysql5.5以上的经常会发现网站访问不到数据库
    最近老是出错,到底怎么解决啊
    2014-04-28 22:29:16
    赞同 展开评论 打赏
  • 不错不错
    2014-04-28 08:24:29
    赞同 展开评论 打赏
  • 这个纯属程序设计不合理,跟mysql没半毛钱关系,设置过长的超时时间只会导致连接数可能被占满导致无法连接,正常的程序在断开连接后就应该主动closed,避免连接持续sleep,8小时的超时时间已经很长了
    2014-04-27 12:02:44
    赞同 展开评论 打赏
  • 这个必须要顶,我后悔死升级mysql5.5了,一点毛用都没有。
    2014-04-23 10:31:47
    赞同 展开评论 打赏
  • 回2楼solidedge的帖子
    RDS如果会出现这种问题 那只能用程序来解决
    2014-04-21 14:23:23
    赞同 展开评论 打赏
  • Re【阿里云解决方案】安装mysql5.5以上的经常会发现网站访问不到数据库
    如果是RDS,该 怎么设置?

    -------------------------

    回3楼自娱自乐的帖子
    我以为RDS也需要设置呢,找了半天没找到地方设置,我使用的是长连接,应该是没事吧`
    2014-04-21 12:48:53
    赞同 展开评论 打赏
  • 回 楼主(自娱自乐) 的帖子
    赞楼主!
    2014-04-21 10:05:15
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
阿里云云原生 Serverless 技术实践营 PPT 演讲 立即下载
阿里云产品十月刊 立即下载
基于阿里云构建博学谷平台实时湖仓 立即下载

相关镜像