当前位置:首页 > 内存 > 正文

mysqld进程占用内存高

  • 内存
  • 2024-06-12 06:01:08
  • 5435

一、如何解决mysql启动时性能_schema占用内存过高的问题?MySQL启动时,如果发现占用物理内存和虚拟内存过多,可以尝试以下两种方法修复。首先,网上有一个常见的建议,修改配置文件中的几个参数,比如performance_schema_max_table_instances、table_definition_cache和table_open_cache。不过这种方法可能并不适用于所有服务器,我在自己的实例上尝试后并没有看到任何明显的改进,物理内存仍为300MB,虚拟内存仍为1GB
对于这个问题,第二种方法更有效。MySQL5.6版本之后,默认启用PerformanceSchema来收集服务器性能数据,但这也可能会导致内存使用量增加。解决方案是禁用PerformanceSchema。在MySQL配置文件的[mysqld]部分添加“performance_schema=off”,然后重新启动MySQL服务。之后,内存占用下降到40MB左右,这是一个明显的改进。尽管我在网上找到了很多文章,但它们往往无法提供实用的解决方案。在阅读了一些内容后,我通过这篇文章解决了这个问题。希望这对以后遇到类似问题的人有所帮助。
二、mysql数据库服务器CPU负载超过200%,mysqld进程导致的,如何解决?可以先用uptime命令查看平均CPU负载
其中2users代表用户连接数,指的是总连接数。
loadaverage是系统的平均负载,系统1分钟、5分钟、15分钟的平均负载。
指一段时间内CPU正在处理和等待CPU处理的进程数总和的统计信息,即CPU使用队列长度的统计信息。数字越小越好。
然后使用vmstat命令查看CPU是否饱和。
这里的R是等待CPU的进程数,当r值为时可以判断CPU是否饱和超过CPU数量,就意味着饱和。
最右边的us、sy、id、wa、st代表所有CPU的利用率百分比。它们分别是usertime、systemtime、idle、waitI/O和stealtime的缩写。us和sy的百分比之和决定CPU是否繁忙。
如果是多核机器,还可以使用mpstat命令来检查是否平衡
CPU相关命令包括pidstat
该命令显示哪些进程正在消耗CPU以及消耗过多CPU的进程需要特别注意。
基本上,通过以上命令就可以初步了解CPU问题的类型。
猜出方向后,就可以进一步深入排查了。