从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件
  • 首页
  • MYSQL
  • MYSQL sleep线程过解决方案和思路

MYSQL sleep线程过解决方案和思路

发布:蔺要红08-27分类: MYSQL

 

长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。

通常的短连接操作步骤是:
连接-》数据传输-》关闭连接;
而长连接通常就是:
连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接;
这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了

show full processlist # 进入数据库查看慢语句,通过kill  id 杀死语句(update语句慎重,可能会丢数据)
root登录到MYSQL,设置超时时间
show global variables like 'wait_timeout';
+---------------+-------+

| Variable_name | Value |

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

| wait_timeout | 28800 |       # 默认超时时间8个小时(单位是秒)

+---------------+-------+
row in set (0.00 sec)

# 修改超时时间 修改配置文件永久生效:
[mysqld]
interactive_timeout = 120  #<==此参数设置后wait_timeout自动生效。
wait_timeout = 120

# interactive_timeout: 服务器关闭交互式连接前等待活动的秒数
# wait_timeout: 服务器关闭非交互连接之前等待活动的秒数。
两者生效取决于:客户端是交互或者非交互的连接。
在交互模式下,interactive_timeout才生效;非交互模式下,wait_timeout生效

# 全局临时生效,重启mysql失效(所以还需要在MYSQL中修改)
mysql> set global wait_timeout=1200;  # 设置为1200秒
mysql> show global variables like "wait_timeout";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| wait_timeout  | 1200  |
+---------------+-------+
1 row in set (0.00 sec)


补充方法

在PHP程序中,不使用持久连接,即使用mysql_connetct而不是pconnect
PHP程序执行完毕,应该显式调用mysql_close
Java程序调整连接池或者调整Java服务(tomcat有关连接池参数)
逐步分析mysql的SQL查询及慢查询日志,找到查询过慢的sql优化

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站