加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL的内存和相关问题排查

发布时间:2018-11-10 17:13:54 所属栏目:MySql教程 来源:虫虫安全
导读:我们都知道数据库是IO密集型一类应用,为了提高其性能大量使用内存代替文件(交换分区)的IO操作是保证数据库稳定、高效的基本原则。那么数据库是如何使用内存的,我们如何查看数据库内存的占用,如何通过通过数据库内存配置设置提高其性能?本文虫虫就以M

swappiness参数控制内核将进程移出物理内存并将其放入交换磁盘分区的趋势。我们之前也说过了磁盘IO操作要比RAM慢很多很多,因此如果进程过于频繁地从内存中置换出,这会导致系统和应用程序的响应时间变慢。高swappiness值意味着内核更容易取消内存页面。低swappiness相反,内核将不太容易取消内存页面。swappiness值越高,系统内存置换的越多。

linux下系统(CentOS、Red Hat、ubuntu)默认的swappiness值为60。如果内存较小则应适当调高这个值。对于内存足够的MySQL服务器,这个默认设置就有点太高了,应该减少。一般情况下,业界建议这个值可以设置到5.或者更小。设置swappiness方法是使用sysctl命令直接改变内核参数。

  1. sysctl -w vn.swappinness = 1 

NUMA设置

还有一个方面就是NUMA设置。对于具有多个NUMA核心的服务器,建议将NUMA模式设置为交错,以平衡所有节点的内存分配。 在最新的MySQL 8.0中支持为InnoDB设置NUMA。可以在配置通过启动:innodb_numa_interleave = 1

要检查是否有多个NUMA节点,可以使用numactl -H

这是两种不同的输出:

MySQL的内存和相关问题排查

MySQL的内存和相关问题排查

我们可以看到,当有多个NUMA节点(下)时,默认情况下,内存不会在所有节点之间平均分配。这可以导致更多内存置换。

文件系统缓存

默认情况下,Linux将使用文件系统会对所有的I/O操作进行缓存(这是不建议使用MyISAM的原因之一,MyISAM存储引擎依赖于FS缓存,并且可能导致丢失数据)。Mysql InnoDB引擎中使用O_DIRECT作为innodb_flush_method,MySQL将绕过文件系统缓存,不会将任何FS Cache Memory用于数据文件(* .ibd)。

当然在MySQL中使用的其他非数据文件仍会使用FS Cache。我们来看个例子:

  1. dbsake fincore binlog.000017 
  2. binlog.000017: total_pages=120841 cached=50556 percent=41.84 
  3. ls -lh binlog.000017 
  4. -rw-r----- 1 mysql mysql 473M Sep 18 07:17 binlog.000017 
  5. free -m 
  6. total used free shared buffers cached 
  7. Mem: 5965 4608 1356 128 435 2456 
  8. -/+ buffers/cache: 1716 4249 
  9. Swap: 2045 30 2015 
  10. dbsake uncache binlog.000017 
  11. Uncached binlog.000017 
  12. # free -m 
  13. total used free shared buffers cached 
  14. Mem: 5965 4413 1552 128 435 2259 
  15. -/+ buffers/cache: 1718 4247 
  16. Swap: 2045 30 2015 

开始检查文件系统缓存中存在多少二进制日志(使用dbsake fincore),我们可以看到473M中有42%使用RAM作为FS缓存。然后我强制取消在缓存中使用这些页面(使用fincore uncache),结果,我们释放了+/- 195MB的RAM。

【编辑推荐】

  1. 存储器就是内存还包括了寄存器?
  2. Linux系统真的很吃内存?
  3. MySQL:缓存算什么东西?!
  4. 深入详解JVM内存模型与JVM参数详细配置
  5. Linux 查看进程消耗内存情况总结
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读