首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须重新启动MySQL以降低CPU的使用率。

我必须重新启动MySQL以降低CPU的使用率。
EN

Database Administration用户
提问于 2022-09-03 12:19:00
回答 1查看 786关注 0票数 0

我将我的服务器迁移到了一个新的RockyLinux9服务器上,从那以后,我的web服务器的MySQL服务器在使用几个小时后几乎占用了100%的CPU。

就目前而言,我发现减少CPU负载的唯一方法是重新启动MySQL服务器,这需要6秒,因此我的web服务器在重新启动时不正常。重新启动后,MySQL进程占用了大约3-10%的CPU.

在迁移之前,MySQL的版本是mysql Ver 8.0.30-0ubuntu0.20.04.2,现在我使用的是mysql Ver 8.0.28 for Linux on x86_64 (Source distribution)版本。

我使用的配置完全相同,我只做了一个副本/过去:

代码语言:javascript
复制
[mysqld]
sql_mode = "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
key_buffer_size         = 16M
myisam-recover-options  = BACKUP
max_binlog_size   = 100M

我在上一个版本中找到的唯一选择是,我的新版本中没有:

代码语言:javascript
复制
optimizer_max_subgraph_pairs 100000

但是这个选项在新服务器上是不可用的,所以我不能设置这个全局var。

这就像在我的新服务器上,MySQL没有自动清除一些缓冲区或缓存,几个小时后,CPU负载就爆炸了。

服务器配置与1G的RAM相同。

我检查了mem的使用量,并在不到20分钟内增加了100米,这是因为MySQL:

代码语言:javascript
复制
free -h
               total        used        free      shared  buff/cache   available
Mem:           954Mi       690Mi        65Mi        23Mi       199Mi        92Mi
Swap:          2.5Gi       2.1Gi       442Mi

所以我重新启动了MySQL,内存的使用立即减少了。

代码语言:javascript
复制
systemctl restart mysqld.service
free -h
               total        used        free      shared  buff/cache   available
Mem:           954Mi       735Mi        70Mi       4.0Mi       148Mi        72Mi
Swap:          2.5Gi       1.4Gi       1.1Gi

现在,MySQL仅占CPU使用率的10%以下。

我应该做什么来限制MySQL在内存的使用?

编辑

我可以使用以下2种设置来限制RAM的使用:

代码语言:javascript
复制
table_definition_cache = 400 #Default 2000
table_open_cache = 400 #Default 4000

但是问题仍然存在,我真的觉得在这个过载MySQL的Rocky的安装上有一个背景过程。

也许是来自MySQL本身的后台进程。

我也认为这种过载是由于后台进程造成的,因为如果我重新启动我的MySQL服务器,当它占据我的90%的CPU时,它会下降3%到15%。所以这不是因为我的网络应用程序的访问。

因此,通过重新启动服务器,我停止了后台进程!

它可以是什么背景过程?

EN

回答 1

Database Administration用户

发布于 2022-09-04 19:09:58

innodb_buffer_pool_size的价值是什么?

在我看来,RAM的使用量上升了,交换的使用率下降了。

这两个设置都只有1GB的RAM,对吗?交换是致命的表现,你有很多交换。server>上还有其他应用程序吗?

上述设置是减少RAM的主要可调参数。我建议从不超过100米开始。

还检查SHOW STATUS LIKE 'Max_used_connections';,然后将max_connections设置为,例如,比“用”的值多2。

为了进行进一步的分析(包括寻找其他可能安全降低的东西),请按照下面的说明:http://mysql.rjweb.org/doc.php/mysql_analysis#tuning

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

https://dba.stackexchange.com/questions/316428

复制
相关文章

相似问题

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