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 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料