db2服务器linux的cache太高缘由

在线上db2数据库服务器,使用的linux操做系统(RHEL,centos),当db2数据库运行一段时间以后,操做系统的物理内存就趋近于0,同时系统的cache暴增,可是use却不高,下面是正常使用linux

free -g
             total       used       free     shared    buffers     cached
Mem:           125         68         57         66          0         66
-/+ buffers/cache:          2        123 
Swap:           15          0         15
复制代码

下面是异常状况git

free -g
             total       used       free     shared    buffers     cached
Mem:           125         68         0         66          0         123
-/+ buffers/cache:          2        123 []()
Swap:           15          0         15 
复制代码

此时可用物理内存过少,db2数据库总体性能降低,影响业务使用,为解决线上,采用临时解决办法,手动去释放cache,方法以下github

sync
echo 1 >/proc/sys/vm/drop_caches
复制代码

在没定位到cache太高缘由以前,只能把手动清理cache的方法写成脚本,放到crontab中定时去清理 通过屡次排查,终于发现操做系统cache太高的缘由,是由于db2数据库备份致使,db2数据库备份时,备份的数据写入文件系统时,先通过文件系统的cache,再从cache写入磁盘中,若是使用direct io,备份数据就不通过cache,会直接写入磁盘,下面要解决 的是怎么让备份去使用direct io。sql

通过查阅db2官方帮助文档,发现有一个参数DB2_BACKUP_USE_DIO,设置成on以后,能够达到此效果,通过测试,db2备份时,系统cache再也不增加,在db2 9.5版本设置此参数须要重启数据库实例,db2 9.5之后版本设置以后,再下一次备份时生效。数据库

喜欢的同窗能够关注个人公众号(db_arch)(Mysql数据库运维与架构设计)

本篇文章由一文多发平台ArtiPub自动发布centos

相关文章
相关标签/搜索