【与达梦同行】数据库coredump的配置方式与截断测试

news2024/11/15 14:08:38

一、简述

  1. Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成。
  2. 在国产操作系统麒麟V10中运维的时候,经常遇见一个问题,那就是core文件生成不完整或者core文件不知道生成在哪里。

二、查看/配置core生成大小

1. 临时设置core文件

  1. 查看生成core文件的开关是否开启;
[root@VM-0-17-centos bin]# ulimit -a

说明:第一行core文件大小为0,没有开启。
在这里插入图片描述

2.使用#ulimit -c [kbytes]可以设置系统允许生成的core文件大小;

ulimit -c 0 不产生core文件
ulimit -c 100 设置core文件最大为100k
ulimit -c unlimited 不限制core文件大小

[root@VM-0-17-centos bin]# ulimit -c unlimited
##查看配置
[root@VM-0-17-centos bin]# ulimit -a

在这里插入图片描述

2. 永久设置core文件

  1. 修改/etc/profile文件添加参数;
1. 在profile文件中加入ulimit -c unlimited
[root@VM-0-17-centos bin]# vim   /etc/profile
ulimit -c unlimited
[root@VM-0-17-centos bin]# source /etc/profile

三、查看/配置core生成路径

1. 查看core的文件扩展名以及生成目录

查看core的文件扩展名

  • 1:添加pid作为扩展名,生成的core文件名称为core.pid
  • 0:不添加pid作为扩展名,生成的core文件名称为core
[root@VM-0-17-centos bin]# cat  /proc/sys/kernel/core_uses_pid 
0
-- 修改 /proc/sys/kernel/core_uses_pid 文件内容为: 1 有下面的两种方式 随便选一种
[root@VM-0-17-centos bin]# echo "1" > /proc/sys/kernel/core_uses_pid
[root@VM-0-17-centos bin]# sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid = 1

查看core的生成目录

-- 查看core文件的存在位置:
[root@VM-0-17-centos bin]# cat /proc/sys/kernel/core_pattern
core

基本两种情况

  • 值为core:则表示core文件默认的存储位置与对应的可执行程序在同一目录下,文件名是core开头的文件
  • 值为/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h,则coredump的目录在/var/lib/systemd/coredump/下,并且是以压缩的方式进行存储一般时lz4结尾的文件

2. 修改core的文件扩展名以及生成目录

--  core文件统一生成指定到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
[root@VM-0-17-centos bin]# mkdir /corefile
[root@VM-0-17-centos bin]# vi /etc/sysctl.conf
kernel.core_uses_pid = 1
kernel.core_pattern=/corefile/core-%e-%p
[root@VM-0-17-centos bin]# sysctl -p /etc/sysctl.conf

以下是参数列表:
%p - insert pid into filename 添加pid(进程id)
%u - insert current uid into filename 添加当前uid(用户id)
%g - insert current gid into filename 添加当前gid(用户组id)
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加导致产生core的命令名

四、(防core截断)调整coredump.conf设置大小

## 1. 修改 /etc/systemd/coredump.conf 设置 ProcessSizeMax ExternalSizeMax 参数值
## 2. 建议值比数据库使用总内存量大,即大于top命令下的dmserver的virt值

##1.修改配置文件
[root@kylin ~]# vi /etc/systemd/coredump.conf
[Coredump]
#Storage=external
#Compress=yes
ProcessSizeMax=2G      # 需大于top命令下的dmserver的virt值
ExternalSizeMax=2G    # 需大于top命令下的dmserver的virt值
#JournalSizeMax=767M
#MaxUse=
#KeepFree=

##2.重启coredump进程
##重新读取配置文件
[root@kylin ~]# systemctl daemon-reload
##重启进程
[root@kylin ~]# systemctl restart systemd-coredump.socket


##注意如曾经修改过/etc/sysctl.conf文件中core文件的生成路径的话,需要将core文件的路径还原为默认路径即做如下修改后,再修改coredump参数
[root@VM-0-17-centos bin]# echo "|/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h">proc/sys/kernel/core_pattern
[root@VM-0-17-centos bin]# echo "1">/proc/sys/kernel/core_uses_pid
[root@VM-0-17-centos bin]# sysctl -p /etc/sysctl.conf

在这里插入图片描述

五、测试core生成

新建test.c文件

#include<stdio.h>

void test(){
    int *p = NULL;
      *p = 0;
}

int main()
{
      test();
      return 0;
}
  1. 编译文件
[root@VM-24-17-centos bin]# vim test.c
[root@VM-24-17-centos bin]# gcc -o test1 test.c
[root@VM-24-17-centos bin]# ./test 1
段错误 (核心已转储)
[root@VM-24-17-centos bin]# ll /corefile/*
-rw------- 1 root root 249856 127 19:20 /corefile/core-test1-2291735-1650281826

六、core截断测试(大于200G)

1. 编写core_main.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int *fun()
{
    int *p=(int*)malloc(1024 * 1024 * 500);//动态申请空间
    memset(p, 0, 1024 * 1024 * 500);
    return p;//返回动态申请的空间是可以的.
}

int main(int argc, char *argv[])
{
 
    int create_num;
    
    if(argc == 2){
      create_num=atoi(argv[1])*2;
      printf("coredump Generate Size is %dG \n",create_num/2);
    }else{
      create_num=5;
      printf("coredump Generate Size is 2.5G by default\n");
    }
   
    char *arr[create_num];

    int i =0;
    
    for(i =0;i<create_num;i++){    

       arr[i]=(char *)malloc(1024 * 1024 * 512);
       memset(arr[i], 0, 1024 * 1024 * 512);	    
   //   int *p_t =  (int*)malloc(1024 * 1024 * 500);
   //   memset(arr[i], 0, 1024 * 1024 * 500);
   //   arr[i]=  (char *)fun();
   //    printf("create_num is %d \n",create_num);   
   //   printf("num is %d \n",i); 
      if(i>=create_num-1){
	      printf("Generating coredump, please wait\n");  
	      int *core_p1 =NULL;
              *core_p1=0;
     }
    }

    printf("end end \n");	

    return 0;
}

2. 编写make.sh

#!/bin/bash
rm -rf coremain 
rm -rf ./core.*

gcc -g -o ./coremain core_main.c 

#$1的值 =1,则表示生成1G的core文件,以此类推
if [ ! $1 ]; then
  ./coremain 
else	
  ./coremain $1
fi

3.进行截断测试

##使用步骤:
##1. 将core_main.c与make.sh放到同级目录
##2. 给make.sh脚本赋权限
 [dmdba@localhost ~]$ chmod 755 make.sh
##3. 执行脚本生成core
##   3.1 不指定生成core的大小,则默认是2.5g
 [dmdba@localhost ~]$ ./make.sh
##   3.2 指定生成core的大小,后面跟参数即可, 210则表示生成的core文件为210G 
 [dmdba@localhost ~]$ ./make.sh 210
## 进行截断查看是否完整

生成core的时候会在操作系统的日志中有明显提示。需要注意查看操作系统有没有问题,如下图
在这里插入图片描述

本文为达梦在线服务平台【与达梦同行】征文活动投稿文章:详细文章
第一届达梦数据库技术征文大赛来啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/71313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一、OpenAI ChatGPT 注册使用

文章目录注册购买openai的官网问题今天早上在sheep公众号里面看到了关于openai 旗下研发的chatgpt的产品&#xff0c;去到chatgpt的网页&#xff0c;我们可以看到他的标语。ChatGPT: Optimizing Language Models for Dialogue 哈哈&#xff0c;我百度了一下&#xff0c;大概意…

文教资料杂志文教资料杂志社文教资料编辑部2022年第17期目录

语言文学研《文教资料》投稿&#xff1a;cn7kantougao163.com 从MRC认知模型看《释大》中的同源关系 苏楚然; 1-4 徐志摩《再别康桥》英译本对比分析——基于许渊冲诗译的“三美论” 牟逸飞;梁楚涵; 5-9 严歌苓小说“笑”书写的语言修辞学视角分析 孙婷婷; 10-12 …

得物云原生全链路追踪Trace2.0-采集篇

一、0xcc开篇 2020年3月&#xff0c;得物技术团队在三个月的时间内完成了整个交易体系的重构&#xff0c;交付了五彩石项目&#xff0c;业务系统也进入了微服务时代。系统服务拆分之后&#xff0c;虽然每个服务都会有不同的团队各司其职&#xff0c;但服务之间的依赖也变得复杂…

学1个月爬虫就月赚6000?别被骗了,老师傅告诉你爬虫的真实情况!

用爬虫赚外快的事情我也干了很多年&#xff0c;爬虫自然不在话下。 那么今天我来说说5个深入一点的爬虫问题&#xff0c;让你清楚爬虫的真实情况&#xff1a; 1.现在的爬虫接单真能1个月赚6000的快外&#xff1f; 2.初级爬虫只能接一些小单&#xff0c;怎样才算初级爬虫水平&…

Kafka ui 搭建以及使用

Kafka ui 序 kafka 本身没有自带相关的 ui 界面&#xff0c;但是很多时候没有页面意味着只有使用命令行进行相关操作如创建 topic、更改 topic 信息、重置 offset 等等。但实际使用中这种效果很差劲&#xff0c;我们一般还是会借助其他软件&#xff0c;实现对 kafka 的页面管…

windows服务器搭建原神私服教程(附客户端+服务端+环境配置)

今天给大家带来的是windows服务器搭建原神私服的教程&#xff0c;服务端搭建于私人windows服务器&#xff0c;客户端支持情况&#xff1a;PC、iOS支持国服 /国际服均可&#xff0c;Android仅支持国际服。本篇文章附有客户端和服务端环境配置文件&#xff0c;请大家按需下载使用…

MobileNet v1神经网络剖析

本文参考: MobileNet网络_-断言-的博客-CSDN博客_mobile-ne Conv2d中的groups参数&#xff08;分组卷积&#xff09;怎么理解&#xff1f; 【分组卷积可以减少参数量、且不容易过拟合&#xff08;类似正则化&#xff09;】_马鹏森的博客-CSDN博客_conv groups Pytorch Mobil…

阿里巴巴正式开源云原生应用脚手架

12 月 3 日&#xff0c;微服务 x 容器开源开发者 Meetup 上海站上&#xff0c;阿里云智能技术专家&#xff0c;云原生应用脚手架项目负责人良名宣布阿里巴巴云原生应用脚手架项目正式开源&#xff0c;并在现场做了相关内容介绍。本次开源的云原生应用脚手架是一款基于 Spring I…

监控Kubernetes集群证书过期时间的三种方案

前言 Kubernetes 中大量用到了证书, 比如 ca证书、以及 kubelet、apiserver、proxy、etcd等组件&#xff0c;还有 kubeconfig 文件。 如果证书过期&#xff0c;轻则无法登录 Kubernetes 集群&#xff0c;重则整个集群异常。 为了解决证书过期的问题&#xff0c;一般有以下几…

关于“堆”,看看这篇文章就够了(附堆的两种应用场景)

… &#x1f4d8;&#x1f4d6;&#x1f4c3;本文已收录至&#xff1a;数据结构 | C语言 更多知识尽在此专栏中!文章目录&#x1f4d8;前言&#x1f4d8;正文&#x1f4d6;认识堆&#x1f4d6;实现堆&#x1f4c3;结构&#x1f4c3;入堆&#x1f4c3;出堆&#x1f4c3;建堆算法…

新Crack:Neodynamic ZPLPrinter SDK for .NET Standard

适用于 .NET Standard V4.0.22.1206 的 Neodynamic ZPLPrinter Emulator SDK 添加对带有自定义字体设置的 ^BC 命令的支持。2022 年 12 月 7 日 - 16:03新版本特征 添加了对带有自定义字体设置的 ^BC 命令的支持。关于 Neodynamic ZPLPrinter Emulator SDK for .NET Standard 使…

在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

广义相加模型&#xff08;GAM&#xff1a;Generalized Additive Model&#xff09;&#xff0c;它模型公式如下&#xff1a;有p个自变量&#xff0c;其中X1与y是线性关系&#xff0c;其他变量与y是非线性关系&#xff0c;我们可以对每个变量与y拟合不同关系&#xff0c;对X2可以…

动态规划入门

一、基本思想 一般来说&#xff0c;只要问题可以划分成规模更小的子问题&#xff0c;并且原问题的最优解中包含了子问题的最优解&#xff0c;则可以考虑用动态规划解决。动态规划的实质是分治思想和解决冗余&#xff0c;因此&#xff0c;动态规划是一种将问题实例分解为更小的、…

JAVA SCRIPT设计模式--结构型--设计模式之FlyWeight享元模式(11)

JAVA SCRIPT设计模式是本人根据GOF的设计模式写的博客记录。使用JAVA SCRIPT语言来实现主体功能&#xff0c;所以不可能像C&#xff0c;JAVA等面向对象语言一样严谨&#xff0c;大部分程序都附上了JAVA SCRIPT代码&#xff0c;代码只是实现了设计模式的主体功能&#xff0c;不代…

知识图谱-KGE-语义匹配-双线性模型(打分函数用到了双线性函数)-2014 :MLP

Knowledge Vault & MLP 【paper】 Knowledge Vault: A Web-Scale Approach to Probabilistic Knowledge Fusion 【简介】 本文是谷歌的研究者发表在 KDD 2014 上的工作&#xff0c;提出了一套方法用于自动挖掘知识&#xff0c;并构建成大规模知识库 Knowledge Vault&…

【Linux】期末复习

文章目录1. 认识Linux系统2. Shell命令3. VI编辑器的使用4. Shell脚本编程5. 实验部分1. 认识Linux系统 Linux特点 完全免费开发性多用户、多任务丰富的网络功能可靠安全、性能稳定支持多种平台 2.Linux系统的组成 内核Shell应用程序文件系统 3.Linux版本 Linux版本由形如x1.x2…

(00)TCL脚本运行环境介绍

(00)TCL脚本运行环境介绍 01-TCL简介 02-TCL编辑器 03-TCL运行环境 04-TCL文件 05-结语 (01)TCL简介 Tcl 语言的全称 Tool Command Language,即工具命令语言。这种需要在 EDA 工具中使用的相当之多,或者说几乎每个 EDA 工具都支持 Tcl 语言。所以对于 IC 专业的…

Android Gradle 学习笔记(三)语言和命令

Gradle 支持使用 Groovy DSL 或 Kotlin DSL 来编写脚本。所以在学习具体怎么写脚本时&#xff0c;我们肯定会考虑到底是使用 Kotlin 来写还是 Groovy 来写。 不一定说你是 Kotlin Android 开发者就一定要用 Kotlin 来写 Gradle&#xff0c;我们得判断哪种写法更适合项目、更适…

Kubernetes那点事儿——日志管理

K8s日志管理前言一、日志二、K8s应用日志标准输出应用日志收集1、emptyDir挂载收集2、边车容器收集前言 程序运行中输出的日志默认暂存在Pod中&#xff0c;当Pod销毁重建时&#xff0c;日志也会丢失。所以需要一些持久化的方法保存程序日志。 一、日志 K8s系统日志 kubelet组件…

如何使用 rust 写内核模块

近年来&#xff0c;Rust 语言以内存安全、高可靠性、零抽象等能力获得大量开发者关注&#xff0c;而这些特性恰好是内核编程中所需要的&#xff0c;所以我们看下如何用rust来写Linux内核模块。01Rust 与内核模块Aliware虽然 Rust 支持已经在 LinuxKernel6.1 版本合并到主线了&a…