gpt4 book ai didi

当我有保持打开的 sleep 连接时 MySQL CPU 增加

转载 作者:可可西里 更新时间:2023-11-01 06:49:47 25 4
gpt4 key购买 nike

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

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

总而言之,我有以下内容:我注意到我的实例的 CPU 正在增加: enter image description here

然后我检查我服务器上的进程列表

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 |
+-------+--------+-------------------+----------------+---------+------+-------+------------------+

您可以看到我只有 2 个连接处于 sleep 状态,其中一个在 1300 秒后就在这里(因为我有一个进程在连接打开时卡住了)

所以我终止了连接 85949,CPU 就掉下来了。 enter image description here

谁能解释一下为什么一个正在休眠的连接会像这样影响我的数据库。

谢谢。

最佳答案

某些未关闭的连接或长时间运行的慢速查询可能会导致此行为。您可以通过配置全局变量 wait_timeout 来限制非关闭连接。作为合理的值,并设置另一个相关变量 interactive_timeout与最佳实践一样高。

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

wait_timeout 配置为略长于应用程序连接池的预期连接生命周期。这是一个很好的安全检查。还相应地分析查询以观察 MySQL 实例的性能可以帮助您避免 I/O bottlenecks .

关于当我有保持打开的 sleep 连接时 MySQL CPU 增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33960802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com