同一时间,网站mysql的连接过多怎么办?

1,首先得查找有没有比较耗时的sql,如果有一定要先解决掉,因为可能能因为低效的sql,照成query请求等待,从而导致connect的数量较多
2,手动释放 数据库连接,这点也很重要,如果没有手动释放资源,如果某个请求处理时间较长,那么自动释放资源的时间就会比较长(进程结束)
3,检查 max_connections 设置是否合理,适当的设置大点,但这不从根本上解决问题。
4,缓存是否做的到位,如果数据要求实时性不是很强的都可以缓存,这是非常有效减少连接的方法。
5,如果以上几方面都已经做的很到位了,那么就可能该考虑增加mysql服务器了,比如分库等。


给几条建议:1.不使用持久链接,在你程序里使用mysql_connect代替mysql_pconnect。如果非要持久连接,请在mysql配置文件里设置一下睡眠超时参数wait_timeout,如果某个连接超时,会被mysql自然终止。比如,wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止。
2.设置mysql查询缓存QueryCache,它非常有用,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。具体怎么设置查询一下手册资料。
3.代码优化,检查你的代码,在程序执行完毕后,是否调用mysql_close来及时关闭连接;查找及优化查询过慢的SQL。


1、减少MySQL请求:可以把有些不需要实时的东西放到cache里,以减少MySQL的请求数缓解压力。
2、做MySQL的主从架构,将请求负载均衡到不同的从服务器上。


说说我一般的解决办法:首先 连接多时要检测配置是否还有空间放大,如果没有就定位请求比较多且耗时的sql,尽量的优化此处sql,如果优化以后还是扛不住,那就只能把此处程序的mysql逻辑改为cache逻辑来避开,其实这些都是老程序积累下来,没办法只能在原来基础上改
补充一下如果是全新开发的建议:1 对数据应合理分库分表,由应用层去动态的选择库和表。MySQL的innodb表虽然理论上可以装海量的 数据,但在我们的业务场景下,最好控制在200w以下, 合理索引
2 需要联合查询时善用left join/right join而不是直接多表联合
3 尽量不要使用select套select的复合查询,如果能拆开,尽量拆开,多条精悍的SQL,组合起来可能就 是一条庞大的SQL,应该避免。
4 善用cache,将不常修改的,数据量有限的,又是被密集查询的信息,加载到cache里,可以有效的降 低数据库压力
5 如果一些逻辑可以放到应用层去完成,可以考虑放到应用层去完成。但如果将SQL逻辑分拆到应用层 可能导致对数据更频繁的访问的话,那么需要考虑修改应用逻辑,数据结构,或回到合理的联合查询上来




1,杜绝使用MySQL持久连接方式。2,搭配Memcache。前两点是必须的。如下可以适当做做:1,主从数据库2,MySQL调优 


根据你的意思来说,你是想要减少mysql 的链接次数1、采用1主多从, 把压力分摊到步同的服务器上面2、看看是否有可能优化你的SQL, 减少QUERY 的数量3、缓存..... 




使用mysql_connect连接数据库也要注意下数据库连接的销毁
采用Nosql,将查询的数据缓存,减少数据库查询次数
以上问题都不能解决,公司又特别有钱,hadhop




减少sql链接请求,可以用加缓存,因为这样请求数据只需请求缓存俩面的数据了,当数据变化时,删除缓存。下次我有人请求数据,读出来后保存缓存中,这样就可以减少链接了。还有优化你的sql语句,这样也能达到减少sql消耗 




首先你得分析一下,是哪的问题,建议生成静态的,这样减少了数据库的交互2,检查sql语句的执行效率,优化语句。3,关闭持久链4断点测试一下是哪里占资源 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值