背景
core文件是程序异常时操作系统保留的完整进程的内存镜像文件,是分析问题最直接最重要材料,所以开启core并保留有效的core文件是必须的。一般core会比较大,我们该如何规划其所占的空间容量和磁盘速度(在实际使用中较为费心)?如何有效的保存core文件且不占用磁盘空间?如何防止由于磁盘空间不足导致 core文件被截断?
1.规划存放core文件的磁盘空间(core文件的大小)容量及速度
单个core文件的大小上限一般为数据库进程所占用内存(一般可以参考 top 命令中的 dmserver 进程对应的 virt 列内存),以此来考虑core文件存放的目录磁盘空间(一般virt约大于1.3倍的res),但一定要特别特别注意的是此磁盘速度一定要快(一般本地磁盘均可以),如果数据库进程内存使用过大,而磁盘写入速度性能较差时,会导致生成 core 文件时间非常漫长(正常core是约在几十秒钟),会影响实例的正常拉起动作,从而影响业务!
2.(麒麟v10)开启core及压缩的步骤如下
1) vi /etc/security/limits.conf
dmdba soft core unlimited
dmdba hard core unlimited
备注:以上是主机用户dmdba作为达梦软件的安装使用用户
2) vim /etc/sysctl.conf
kernel.core_pattern = |/usr/bin/lz4 -z % - /dm/core-%p-%e-%t-%h.lz4
备注:上边的core是放在/dm目录下并开启压缩模式(默认使用快速压缩,不要高效压缩,因为会影响core的时间),可自行更改所需要的目录。
3) sysctl -p && sysctl -a | grep core_pattern
4) 测试lz4解压后的文件使用gdb来调试其core正常。
总结:
虽然压缩后的core是非常小的,但是在core的一瞬间仍是需要约占virt列的磁盘空间,所以一般我们是建议core文件的磁盘空间容量规划约为内存的1.2至2倍,并且磁盘速度一定要快!如果本地磁盘空间不够,可以选择速度足够快的存储阵列上。
文章
阅读量
获赞