MySQL占用系统进程_MySQL的Sleep进程占用大量连接解决方法

第一部分为产生大量sleep进程的原理及对应解决方法

第二部分为设置wait_timeout值,有效减少sleep进程

==========================================

第一部分开始

1、通常来说,MySQL出现大量Sleep进程是因为采用的PHP的MySQL长链接数据库方式,即使用了mysql_pconnect来打开链接数据库,解决办法就是使用“短”链接,即mysql_connect函数。

2、在使用mysql_connect短链接方式打开数据库,每个页面在打开数据库后,执行SQL完成,当页面脚本结束的时候,这个MySQL连接会自动关闭并且释放内存。但仍然出现大量Sleep进程,可以看看网站是否存在以下几个方面的问题。

A,硬盘上存在大量的静态文件,或者WEB服务器负荷太重,在处理HTTP请求响应变得太慢,这样也有可能导致出现大量Sleep进程,解决方法适当调整WEB服务参数和文件,一味的静态或者缓存化网页内容并不是灵丹妙药。

B,在网页脚本中,有些计算和应用可能非常耗时,比如在0秒的时候打开数据库执行完一段SQL代码后,网页脚本随即花了20秒钟进行一段复杂的运算,或者是require了一个庞大的PHP文件(比如含有几千个违规关键字的过滤函数),哪么这个时候在MySQL后台看到的进程中,这个20秒的过程MySQL并没有做任何事情了,一直处于Sleep状态,直到这个页面执行完毕或者达到wait_timeout值(被强行关闭),优化网页脚本,尽量让程序快速运行,或者在执行这段耗时的运行过程中,执行mysql_close把当前MySQL链接强行关闭。

C,在采集站中,MySQL中大量的Sleep进程这类现象尤其明显(比如很多网友问道DeDeCMS的MySQL中出现大量Sleep),因为大部的采集器页面在运行过程中,事先打开了一个MySQL链接(可能是为了验证用户权限等),然后开始使用file_get_contents之类的操作去获取一个远程的网页内容,如果这个远程的站点访问速度太慢,比如花了10秒时间才把网页取回,哪么当前采集脚本程序就一直阻塞在这里,并且MySQL啥事也没干,一直处于Sleep状态。解决方法同上,在发出file_get_contents采集远程网页的时候,使用mysql_close强行关闭MySQL的连接,等采集完成在适当需要的时候再重新mysql_connect即可。

==========================================

第二部分开始

设置wait_timeout的值,有效减少sleep进程

如果你没有修改过MySQL的配置,缺省情况下,wait_timeout的初始值是28800。

wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个值设置的过小,否则可能会遭遇到“MySQL has gone away”之类的问题(你可以在程序里时不时mysql_ping一下,以便服务器知道你还活着,重新计算wait_timeout时间),使用

mysql>show processlist; 用这个命令来查看当前mysql的进程情况,可以看出大量的sleep进程的时间是多少,大部分的都是10左右的,这时wait_timeout值就可以设置成8-10;

设置wait_timeout的方法有2个:

# vi /etc/my.cnf (在windows下是my.ini)

[mysqld]

wait_timeout=10

# /etc/init.d/mysql restart

这个方法设置后即使服务器以后重启,设置照样生效,不过这个方法会造成mysql服务重启,无论如何都应该尽可能避免;

下面看看在MySQL命令行里通过SET来设置:

mysql> set global wait_timeout=10;

mysql> show global variables like 'wait_timeout';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| wait_timeout               | 10    |

+----------------------------+-------+

这里一个容易把人搞蒙的地方是如果查询时使用的是show variables的话,会发现设置好像并没有生效,这是因为单纯使用show variables的话就等同于使用的是show session variables,查询的是会话变量,只有使用show global variables,查询的才是全局变量。

网络上很多人都抱怨说他们set global之后使用show variables查询没有发现改变,原因就在于混淆了会话变量和全局变量,如果仅仅想修改会话变量的话,可以使用类似set wait_timeout=10;或者set session wait_timeout=10;这样的语法。

这个方法只是临时性的,如果服务器重启后,wait_timeout的值又会变成28800。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国工程院发布“中国电子信息工程科技发展十六大挑战”

来源:通信世界全媒体通信世界网消息(CWW)为响应中央决策部署,推进我国新型数字基础设施建设,推动我国电子信息工程科技领域高质量发展,助力数字基建科学发展驱动壮大经济新动能。4月26日,中国工程院信息与电子学部、中…

Unix下5种I/O模型

Unix下I/O模型主要分为5种: (1)阻塞式I/O (2)非阻塞式I/O (3)I/O复用(select和poll) (4)信号驱动式I/O (5)异步I/O 1、阻塞式I/O模型 unix基本的套…

2019年智能科学与产业综述论文盘点

来源:计算机研究与发展2019年综述论文盘点1.智能芯片的评述和展望(韩栋,周聖元,支天,陈云霁,陈天石)2.闪存存储的重构与系统构建技术(陆游游,杨者,舒继武)3.基于动态权衡的新型非易失存储器件体系结构研究综述&#xf…

h命令可以获取mysql客户端的帮助信息_如何获取MySQL帮助信息

在开发或测试环境在碰到MySQL相关故障时,大多数朋友可能会通过论坛发帖,QQ群讨论方式来获取帮助。该方式是获取帮助的有效途径之一。然而如果在生产环境,在没有网络的环境下,这些方式就无助于问题的解决。无论何种数据库&#xff…

PageObjects 设计模式

什么是Page Objects(翻译为:页面对象?)… 简单的说,Page Objects是指UI界面上用于与用户进行交互的对象。它可以指整个页面,也可以指Page上的某个区域。Page Objects是你的test code的交互对象,是对实际UI的一种抽象模…

AI与人类围棋士的差距到底有多大?

来源:计算广告四年前,谷歌旗下DeepMind公司开发的围棋人工智能AlphaGo以4-1战胜韩国大国手李世乭九段。今天,AlphaGo在大众视野中掀起的惊涛骇浪已渐平息,AlphaGo和李世乭都已从江湖退隐。然而,围棋界因AlphaGo而起的沧…

mariadb使用mysql驱动_MariaDB安装与使用

下载相对应的电脑版本程序等待下载完成......安装教程:双击运行设置数据库的密码等待安装完成..这样就完成安装了。安装完成,会在桌面生成这个图标双击可以直接使用下面我通过两种方式来使用MariaDB数据库(可视化,命令行)通过可视化方式使用。…

SpringMVC 应用配置

1、增加Spring的支持 新建web项目,添加如下jar包: commons-logging-1.2.jar  spring-aop-4.2.5.RELEASE.jar  spring-aspects-4.2.5.RELEASE.jar  spring-beans-4.2.5.RELEASE.jar spring-context-4.2.5.RELEASE.jar  spring-context-support-4.…

脑机接口技术重大突破!首次帮助瘫痪男子恢复运动和触觉

来源:网易智能触觉是我们感受外部世界不可或缺的感官,但许多人却因脊髓损伤或因患病瘫痪而失去这种能力。不过,最近非营利组织巴特尔研究所的研究人员宣称,他们首次利用脑机接口(BCI)技术帮助一名美国瘫痪男…

LoadRunner如何调用外部函数

LoadRunner如何调用外部函数 使用 VuGen 时,可以调用在外部 DLL 中定义的函数。通过从脚本调用外部函数,可以降低脚本的内存使用量以及总体运行时间。要调用外部函数,需要加载定义了该函数的 DLL。可以用下列方法加载 DLL: 本地—…

python海龟图画龙珠_火影,海贼王,七龙珠,还在为漫画书发愁!我用Python一键生成电子漫画书...

小时候看漫画都是要买书的,一本好几块钱,成本那个高啊后来可以在线看漫画,感觉真是爽不过近几年新的问题又出现了:漫画网站广告太多,更重要的是越来越多的作品、章节出于各种原因被下架、限制观看。为了提升观看体验&a…

谷歌自揭“家丑”:医疗AI实验室表现超神,临床结果却不佳

来源:澎湃新闻在医疗领域,尤其是在医学影像筛查过程中,人工智能常被描述为完美的工作者。它们能准确识别疾病,拥有人类专家级的发现能力,还不知疲倦。但与许多技术一样,在实验室取得成功是一回事&#xff0…

[openjudge] 2797最短前缀 Trie

描述 一个字符串的前缀是从该字符串的第一个字符起始的一个子串。例如 "carbon"的字串是: "c", "ca", "car", "carb", "carbo", 和 "carbon"。注意到这里我们不认为空串是字串, 但是每个非空串是它自身…

mysql 移植ucos_基于STM32F767的UCOSIII移植学习

(一)移植前的准备1.HAL库基本工程模板新建一个工程模块,其中包含LED驱动和串口驱动程序即可,用于验证UCOS-III系统能够正常工作。2.UCOS-III源码准备去Micrium官网下载最新的UCOSIII源码,下载地址:Micrium官网下载地址&#xff0c…

美国5G到底怎么了?

来源:网优雇佣军美国司法部长威廉巴尔(William Barr)在2月6日应华盛顿智库“战略与国际研究中心”(CSIS, Center for Strategic & International Studies)邀请,参加了“中国倡议”会议(Chin…

Mysql实现幂等_MQ如何方式消息重复消费--幂等性

一、何为幂等性?其任意多次执行所产生的影响均与一次执行的影响相同从对系统的影响结果来说:At least once 幂等消费 Exactly once。那么如何实现幂等操作呢?最好的方式就是,从业务逻辑设计上入手,将消费的业务逻辑设…

SQL实践篇(一):使用WebSQL在H5中存储一个本地数据库

文章目录 简介本地存储都有哪些?如何使用WebSQL打开数据库事务操作SQL执行 在浏览器端做一个英雄的查询页面如何删除本地存储参考文献 简介 WebSQL是一种操作本地数据库的网页API接口,通过它,我们可以操作客户端的本地存储。 WebSQL曾经是H…

JavaScript之正方教务系统自动化教评[插件-转载]

【声明】本插件系学院学长原创,非博主所创,发布此处,仅供学习和效仿。 /*** name:正方教务系统自动化教评-插件* * author:chenzhongshu* date:2017-07-04* notice:原生js;无需依赖项**/(function() {var courseCode;var timer;var autoFill …

预计2024年之前载人登月!NASA授予马斯克贝索斯公司大单

来源:小小据外媒报道,当地时间周四,美国宇航局(NASA)宣布选中埃隆马斯克(Elon Musk)旗下美国太空探索技术公司SpaceX、杰夫贝索斯(Jeff Bezos)的蓝色起源公司(Blue Origin)和Dynetics为其设计和建造月球着陆系统&#…

java 遗传算法_[原]遗传算法Java实现源代码

【Title】[原]遗传算法Java实现源代码【Date】2013-04-07【Abstract】以前学习遗传算法时,用Java实现的遗传算法程序,现整理分享出来。【Keywords】wintys、遗传、算法、algorithm、种群、基因、个体、进化、染色体、适应度、Rosenbrock【Environment】W…