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

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

虐人心 发布于 2017-02-11 字数 238 浏览 1356 回复 16

大家好,我的问题是这样的,我网站会员一般集中在早上9.00-10.00比较活跃,当用户每次打开一个页面时,就会发送一次MySQL的请求,这样就导致同一时间会有大量的MySQL连接请求,消耗资源,请问有没有什么好的优化手段来减少connect次数呢,非常谢谢!

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(16

瑾兮 2017-10-15 16 楼

减少mysql请求,可以将频繁读取的数据写入缓存,然后读缓存即可
其次,关闭持久连接或者将连接自动关闭时间调整到一个较低的数值,例如10,这样不论是否是持久连接,都会在连接10s后断开。

归属感 2017-09-26 15 楼

1,首先得查找有没有比较耗时的sql,如果有一定要先解决掉,因为可能能因为低效的sql,照成query请求等待,从而导致connect的数量较多

2,手动释放 数据库连接,这点也很重要,如果没有手动释放资源,如果某个请求处理时间较长,那么自动释放资源的时间就会比较长(进程结束)

3,检查 max_connections 设置是否合理,适当的设置大点,但这不从根本上解决问题。

4,缓存是否做的到位,如果数据要求实时性不是很强的都可以缓存,这是非常有效减少连接的方法。

5,如果以上几方面都已经做的很到位了,那么就可能该考虑增加mysql服务器了,比如分库等。

夜无邪 2017-09-17 14 楼

缓存也许可以帮你大忙,我也在考虑这个问题。

瑾兮 2017-08-08 13 楼

说说我一般的解决办法:
首先 连接多时要检测配置是否还有空间放大,如果没有就定位请求比较多且耗时的sql,尽量的优化此处sql,如果优化以后还是扛不住,那就只能把此处程序的mysql逻辑改为cache逻辑来避开,其实这些都是老程序积累下来,没办法只能在原来基础上改

补充一下如果是全新开发的建议:
1 对数据应合理分库分表,由应用层去动态的选择库和表。MySQL的innodb表虽然理论上可以装海量的 数据,但在我们的业务场景下,最好控制在200w以下, 合理索引

2 需要联合查询时善用left join/right join而不是直接多表联合

3 尽量不要使用select套select的复合查询,如果能拆开,尽量拆开,多条精悍的SQL,组合起来可能就 是一条庞大的SQL,应该避免。

4 善用cache,将不常修改的,数据量有限的,又是被密集查询的信息,加载到cache里,可以有效的降 低数据库压力

5 如果一些逻辑可以放到应用层去完成,可以考虑放到应用层去完成。但如果将SQL逻辑分拆到应用层 可能导致对数据更频繁的访问的话,那么需要考虑修改应用逻辑,数据结构,或回到合理的联合查询上来

晚风撩人 2017-08-03 12 楼

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

偏爱自由 2017-07-28 11 楼

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

想挽留 2017-07-09 10 楼

尽量的静态化,减少必须数据库访问的页面,使用页面即缓存如Squid来减轻后端压力。

甜柠檬 2017-07-07 9 楼

检查你的sql语句是不是有问题,其次就是上面说的用缓存技术,页面缓存和数据库缓存,解决频繁操作数据库!

归属感 2017-06-12 8 楼

1.优化的数据库建立索引,连接后关闭数据连接
2.更是数据库配置,设置并发数
3.用vps做几个数据服务器,做数据同步,采用读写分离的方法,分散数据压力!

浮生未歇 2017-06-11 7 楼

使用mysql_connect连接数据库

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

想挽留 2017-05-19 6 楼

应该从各方面来考虑:
发送的这个MYsql请求是必须的吗?
如果是,那就从增加连接数来考虑了,增加连接数的有效方式就是增加数据库。还有就是考虑这个请求是有写有读,还是只读?无论那种方式,都可以使用数据库的主从结构,主库供读写,从库供读。如果是有写有读的,那只能从主库来写、读,可以增加多个主库来应对这种情况;如果是只读的,多增加几个读库,全从读库来读。

如果不是必须的,那就可以适用缓存,memcache等可以大大减少对数据库的访问

另外,使用连接池,这样可以有效地管理connection

想挽留 2017-05-03 5 楼

首先你得分析一下,是哪的问题,建议生成静态的,这样减少了数据库的交互
2,检查sql语句的执行效率,优化语句。
3,关闭持久链
4断点测试一下是哪里占资源

浮生未歇 2017-04-25 4 楼

给几条建议:
1.不使用持久链接,在你程序里使用mysql_connect代替mysql_pconnect。如果非要持久连接,请在mysql配置文件里设置一下睡眠超时参数wait_timeout,如果某个连接超时,会被mysql自然终止。比如,wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止。

2.设置mysql查询缓存QueryCache,它非常有用,当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。具体怎么设置查询一下手册资料。

3.代码优化,检查你的代码,在程序执行完毕后,是否调用mysql_close来及时关闭连接;查找及优化查询过慢的SQL。

虐人心 2017-04-20 3 楼

关于MySQL优化的研究已经有很多,按照前人总结的优化项目逐个优化一下应该会看到明显效果,这里推荐一篇文章,供参考:

高手详解SQL性能优化十条经验

泛泛之交 2017-04-15 2 楼

1、减少MySQL请求:可以把有些不需要实时的东西放到cache里,以减少MySQL的请求数缓解压力。

2、做MySQL的主从架构,将请求负载均衡到不同的从服务器上。

虐人心 2017-03-12 1 楼

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