首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我保持打开的睡眠连接时,MySQL CPU会增加

问当我保持打开的睡眠连接时,MySQL CPU会增加
EN

Stack Overflow用户
提问于 2015-11-27 15:45:20
回答 1查看 4.9K关注 0票数 8

我有一个MySQL 5.6.27-0ubuntu0.14.04.1,它运行在一个带有4个CPU的Google实例上。

我注意到,如果我有一个长时间睡眠的连接,那么服务器的CPU将以线性方式增加。我不明白为什么?如果我关闭了睡眠连接,那么CPU就恢复到正确的使用状态。

总之,我注意到我的实例的CPU在增加:

​

然后,我检查服务器上的处理列表。

代码语言:javascript
复制
mysql> show processlist
-> ;
+-------+--------+-------------------+----------------+---------+------+-------+------------------+
| Id    | User   | Host              | db             | Command | Time | State | Info             |
+-------+--------+-------------------+----------------+---------+------+-------+------------------+
| 85949 | nafora | paper-eee-2:58461 | state_recorder | Sleep   | 1300 |       | NULL             |
| 85956 | nafora | paper-eee-2:58568 | state_recorder | Sleep   |   64 |       | NULL             |
| 85959 | root   | localhost         | NULL           | Query   |    0 | init  | show processlist |
+-------+--------+-------------------+----------------+---------+------+-------+------------------+

你可以看到,我只有两个连接,睡眠,其中一个是从1300秒(因为我有一个进程是与连接打开)

所以我杀了连接85949,然后CPU就掉下来了。

​

有人能解释一下为什么一个处于休眠状态的连接会像这样影响我的数据库吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-06-22 11:20:23

一些未关闭的连接或长时间运行的缓慢查询可能会导致此行为。您可以通过将全局变量等配置为合理的值来限制非关闭连接,还可以根据最佳实践设置另一个相关变量互动式。

使用连接池(Java、.NET等)的有状态应用程序将需要调整wait_timeout以匹配它们的连接池设置。默认的8小时(wait_timeout = 28800)在正确配置的连接池中运行良好。

将wait_timeout配置为略长于应用程序连接池的预期连接生存期。这是一个很好的安全检查。同样,配置相应的查询以观察MySQL实例的性能可以帮助您避免I/O瓶颈。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33960802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档