xiaochun023 2009-07-21 00:48 采纳率: 0%
浏览 902
已采纳

这样设置mysql max_connections 有问题不?

一直不是很清楚数据库连接池相关的问题

我用的是hibernate +spring

现在我在做生成静态文件时常出现
Data source rejected establishment of connection message from server: "Too many connections";

在网上找解决方法:用的是

原因:

因为你的mysql安装目录下的my.ini中设定的并发连接数太少或者系统繁忙导致连接数被占满

解决方式:

打开MYSQL安装目录打开MY.INI找到max_connections(在大约第93行)默认是100 一般设置到500~1000比较合适,重启mysql,这样1040错误就解决啦。
max_connections=1000

原本100 现在突然设置到1000 有什么隐患?

网站同时访问人数 50左右

假设同时连接数据库达到了500 ,那么过了这个时间段,真正同时访问数据库的就60 ,那其它的460个线程是自己关掉了还是开在那里? 或什么时候他们会自己关掉?

  • 写回答

2条回答 默认 最新

  • pjuneye 2009-07-21 07:31
    关注

    LZ的问题要分开来看才对.分成两部分第一部分:数据库(max-connection),第二部分应用程序(pool-size).在现在的应用程序里面我们都会用到一个叫数据库连接池的技术这个技术可以有效降低频繁构造和销毁数据库链接带来的性能销毁.对应数据库链接池我们有一个设置如pool-size,这个设置我们称为连接池的大小,就是初始化以后连接池里面有多少数据库链接数.这个pool-size不够用的时候,我们可以设置一个连接池的增长量不如每次增加10个,这些增加的在没用的情况下会被销毁掉.

    现在LZ的问题是pool-size+增长量 > 数据库里面的max-connection的时候就会出现"Too many connections".也就是你对系统中可能的最大连接数的峰值评估不合理,修改max-connection是正常的行为.不过峰值是500,修改成1000也太过了.

    而LZ的第二个问题
    [quote]假设同时连接数据库达到了500 ,那么过了这个时间段,真正同时访问数据库的就60 ,那其它的460个线程是自己关掉了还是开在那里? 或什么时候他们会自己关掉?[/quote]
    很明显,这部分与max-connection无关,这里需要的是数据库连接池的设置来控制. pool-size的大小决定了,当多余的链接不用时,具体会保留多少.多出来的一定会销毁掉的.

    个人理解,望对LZ有用.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能