作者:摩羯法国反弹 | 来源:互联网 | 2023-07-28 17:21
数据库|mysql教程服务器,mysql,影响,资源数据库-mysql教程bitsCN.comphp手机二手车源码,前端vscode安装教程,ubuntu装xz,tomcat底层原
数据库|mysql教程
服务器,mysql,影响,资源
数据库-mysql教程
bitsCN.com
php手机二手车源码,前端vscode安装教程,ubuntu装xz,tomcat底层原理详解,在sqlite里添加数据,黑色爬虫类似于蜗牛,php 选择时间,新乡优惠seo优化推荐,网站设置倒计时代码,高端水果网站模板lzw
MySQL sleep连接过多的完美解决办法
众筹手机版php源码,ubuntu查看网卡启动,爬虫陶瓷灯有味,php beast 加密,seo论坛兼职lzw
睡眠连接过多,会对mysql服务器造成什么影响?
html5网游源码,vscode跳转下一行,ubuntu 安装x11,tomcat运行之后无法启动,sqlite文本 搜索,网页设计自学可以吗,cdn加速 服务器,统计图形插件,jquery前端验证框架,爬虫类饲养,php模板类,王德春seo,二维码 Springboot,网站dede后台,网页分块加载,织梦cms模板文件,公众号登录页面模板下载,access数据库在资源管理系统中的应用,订单提交程序lzw
严重消耗mysql服务器资源(主要是cpu, 内存),并可能导致mysql崩溃。
造成睡眠连接过多的原因?
1. 使用了太多持久连接(个人觉得,在高并发系统中,不适合使用持久连接)
2. 程序中,没有及时关闭mysql连接
3. 数据库查询不够优化,过度耗时。
那么,如果要从根本上解决sleep连接过多,就得从以上三点反复检查,但是见效并不快。
网上有人分享,使用shell脚本配合cron,定期杀死睡眠时间太久的连接,但是这种方法非常不可取,典型的以暴制暴,很可能导致数据崩溃,而且,还需要编写相应shell, 设置cron, 实施成本较繁琐,不推荐使用。
那么更好的办法应该是让mysql自己决定这些睡眠连接的命运,实施会更简单,有效。
mysql的配置文件中,有一项:
wait_timeout, 即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止,多好的办法!
如设置:
wait_timeout=100 #即设置mysql连接睡眠时间为100秒,任何sleep连接睡眠时间若超过100秒,将会被mysql服务自然终止,要比编写shell脚本更简单。
那么,对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办?很简单,以root用户登录到mysql,执行:
set global wait_timeout=100
即可。
在我的生产环境中,使用这个办法,取得了相当好的效果。
当然,更根本的方法,还是从以上三点排查之:
1. 程序中,不使用持久链接,即使用mysql_connect而不是mysql_pconnect。
2. 程序执行完毕,应该显式调用mysql_close
3. 只能逐步分析系统的SQL查询,找到查询过慢的SQL,优化之.
bitsCN.com