当前位置: 首页 > news >正文

Linux 系统为何产生大量的 core 文件?

image1-57

Author:rab


目录

    • 一、问题分析
    • 二、解决方案
    • 扩展


一、问题分析

上一篇刚讲到《Docker 配置基础优化》,这里再补充一下。就在中秋+国庆这段小长假里,接收到了线上服务器磁盘告警通知,线上服务器架构是一个 Docker Swarm 集群,该集群上运行了多个服务。于是就登录服务上去看个究竟,结果发现 Docker 业务日志数据量都是正常的,因此第一个想到的就是 Docker 的存储驱动目录 /<yourpath>/overlay2 占用大小,进去看结果发现有一个文件(目录)数据大小异常(这里忘记截图了 - 大概 140 多 G),然后就根据这个目录名称找到归属的具体容器,看看是哪个容器产生的数据。以下是查看命令:

docker ps -q | xargs docker inspect --format '{{.State.Pid}}, {{.Name}}, {{.GraphDriver.Data.WorkDir}}' | grep "fe9eecfd2fc5f5c2289bd19194900c0c707d67e05e54ea55721c4d3c3ba8cc03"

image-20231006154139301

确定目标容器后,就进入容器去看一下,结果在运行程序(xxx.jar)主目录(即同级目录)下发现有大量的 core 文件,且每个文件的大小均为 105M,粗略统计了一下大概占用了 143G 左右的大小。

cip

那这些 Core 文件是什么文件?又是怎么产生的呢?

首先我们要知道 core file 是什么文件?在Linux系统中,“core file”(核心文件)是指在程序异常崩溃(如段错误、非法指令等)时生成的文件,它包含了程序在崩溃瞬间的内存状态信息,帮助开发人员进行调试和分析问题,我们一般使用调试器工具(如GDB)来分析核心文件,以便定位和解决问题。

核心文件的名称通常是 “core”,并且会与崩溃的进程相关联,因此它可能具有类似于 “core.<进程ID>” 的名称,其中 “<进程ID>” 是崩溃的进程的实际ID。核心文件通常会生成在程序崩溃的当前工作目录中,但也可以通过调整系统的核心转储设置来指定其他位置。

核心文件包含了程序的内存映像,包括堆栈、寄存器的状态以及其他与程序状态相关的信息。这些文件通常很大,因此在默认情况下,许多 Linux 系统都会禁用核心文件的生成,以节省磁盘空间。要启用核心文件生成,可以使用 ulimit 命令或 /proc/sys/kernel/core_pattern 文件进行配置。

默认情况下:Host 宿主机是限制生成 core 文件的(即禁用的),但是容器中却是无限制的(因其独立的 namespace),因此当容器中程序异常时就会生成 core 文件,而且是无限制的,这样一来就会耗尽我们 Host 宿主机的磁盘空间。

image-20231006152336223

接着查看该容器的资源利用情况:

image-20231007115436186

image-20231007115536670

可见容器的 CPU 波动非常大(非常不稳定),因为持续时间很短,所以并没有达到监控告警的条件,但是我没可以通过 core 文件来分析导致 CPU 浮动的原因。

二、解决方案

如果需要分析这些 Core 文件,可先下载到本地其他服务器进行分析,从运维角度来说,可进入容器直接删除这些 Core 文件即可。但为了避免后续的问题,应将这些 core 文件交给开发人员进行程序异常分析,并做后续优化。

1、进入容器内部

docker exec -it <容器名> bash

2、删除 core 文件

rm -rf core.*

切记!!!不要在/<yourpath>/overlay2目录下进行任何增删操作,否则可能会导致容器内部程序异常。

其实这只是临时解决的,如果要解决根源问题,需要开发人员优化代码(解决 CPU 波动问题)或把容器中“core dump(核心转存)”关闭,关闭步骤如下:只需在 Docker 服务的启动命令添加--default-ulimit core=0:0选项即可。

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --default-ulimit core=0:0
systemctl daemon-reload
systemctl restart docker.service

运行一个测试容器再次验证,此时的容器已经限制了 core file 了。

docker run -it --rm centos:centos7.9.2009

image-20231007122511428

如果此时你想要启用 core dump,去掉 --default-ulimit core=0:0 选项即可。

扩展

1、overlay2 目录下的那些长目录说明

overlay2 目录下的那些长目录实际上对应 Docker 中运行的容器或镜像的文件系统层。每个子目录都包含容器或镜像的文件系统内容。这些子目录的名称是由一种称为 SHA256 散列的哈希函数生成的,用于唯一标识每个文件系统层。

image-20231006153616395

每个子目录中包含容器或镜像的文件系统内容,以及元数据和其他相关信息。这些文件系统层会根据需要叠加在一起,以创建容器的整体文件系统视图。

2、如何配置 Linux 系统的 core file

  • 启用

    # 法1:ulimit命令 - 临时生效(重启失效)
    ulimit -c unlimited  # 无限制大小
    ulimit -c 100000     # 限制大小为100MB# 法2:/etc/security/limits.conf文件 - 永久生效
    cat /etc/security/limits.conf
    * hard core unlimited
    * soft core unlimited
    

    如何自定义 core 文件名及存储目录?

    # 法1:/proc文件
    # 自定义core文件名及存储位置
    echo "/tmp/core-%e.%p" > /proc/sys/kernel/core_pattern
    # 或
    sysctl -w kernel.core_pattern="/tmp/core-%e.%p"
    # 这两条任意命令会将核心文件保存在/tmp目录中,文件名格式为core-<进程名称>.<进程ID># 法2:/etc/sysctl.conf文件
    cat /etc/sysctl.conf
    kernel.core_pattern = /tmp/core-%e.%p
    kernel.core_uses_pid = 1
    
  • 禁用

    # 法1:ulimit命令 - 临时禁用
    ulimit -c 0# 法2:/etc/security/limits.conf文件 - 永久禁用
    cat /etc/security/limits.conf
    * hard core 0
    * soft core 0
    

—END

相关文章:

Linux 系统为何产生大量的 core 文件?

Author&#xff1a;rab 目录 一、问题分析二、解决方案扩展 一、问题分析 上一篇刚讲到《Docker 配置基础优化》&#xff0c;这里再补充一下。就在中秋国庆这段小长假里&#xff0c;接收到了线上服务器磁盘告警通知&#xff0c;线上服务器架构是一个 Docker Swarm 集群&#x…...

Web_python_template_injection SSTI printer方法

这题挺简单的 就是记录一下不同方法的rce python_template_injection ssti了 {{.__class__.__mro__[2].__subclasses__()}} 然后用脚本跑可以知道是 71 {{.__class__.__mro__[2].__subclasses__()[71]}} 然后直接 init {{.__class__.__mro__[2].__subclasses__()[71].__i…...

TCP/IP网络江湖——江湖导航(网络层上篇)

目录 一、引言 二、IP地址与路由 三、IP协议与数据包转发 3.1 IP协议:网络江湖的规矩...

数据结构——AVL树(详解 + C++模拟实现)

文章目录 前言AVL树的概念AVL树节点的定义AVL树类框架AVL树的插入AVL树的旋转新节点插入较高子树的左侧 —— 左左: 右单旋新节点插入较高右子树的右侧——右右: 左单旋新节点插入较高左子树的右侧 —— 左右&#xff1a; 先左单旋然后再有单旋新节点插入较高右子树的左侧&…...

redis 雪崩,穿透,击穿及解决方案

一、缓存雪崩&#xff1a; 1. 原因: 缓存雪崩是指在我们设置缓存时大量采用了相同的过期时间&#xff0c;导致缓存在某一时刻同时失效&#xff0c;请求全部转发到DB&#xff0c;DB瞬时压力过重雪崩。 2. 解决方案: 将失效时间分散&#xff0c;通过生成随机数使得key的过期时间…...

Flutter环境搭建及新建项目

一、下载安装压缩包 https://storage.flutter-io.cn/flutter_infra_release/releases/stable/windows/flutter_windows_3.10.6-stable.zip 二、解压缩 解压之后&#xff0c;将里面的flutter整体拿出来 三、配置环境变量 将flutter/bin全路径配置到系统环境变量里面 四、运行…...

【面试题精讲】深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

“ 有的时候博客内容会有变动&#xff0c;首发博客是最新的&#xff0c;其他博客地址可能会未同步,认准https://blog.zysicyj.top ” 首发博客地址[1] 面试题手册[2] 系列文章地址[3] 深拷贝和浅拷贝的区别&#xff1a; 深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#…...

CentOS7.9中使用packstack安装train版本

这里写目录标题 材料准备为什么选择packstack安装静态ip系统配置使用阿里云yum源安装packstack部署openstack 材料准备 ecs云服务器8核心16g内存一台&#xff0c;系统盘100GB&#xff0c;系统CentOS7.9vpc网段&#xff1a;192.168.0.1/24eip一个&#xff0c;带宽5M以上 为什么…...

mfw git泄露构造闭合

这题也挺有想法 第一次确实没有想到 首先我们可以扫出 git 然后 我们githack 泄露一下 然后我们看index.php代码 <?phpif (isset($_GET[page])) {$page $_GET[page]; } else {$page "home"; }$file "templates/" . $page . ".php";/…...

UE5修改导航网格的参数

Unreal Engine 4 - Recast NavMesh Size, how to Change Agent Radius / Tutorial - YouTubehttps://www.youtube.com/watch?vf3hF6xdmCTk 修改当前的 代理半径就是一般贴边的长度 修改编辑器的...

郁金香2021年游戏辅助技术中级班(七)

郁金香2021年游戏辅助技术中级班&#xff08;七&#xff09; 058-C,C写代码HOOK分析封包数据格式A059-C,C写代码HOOK分析封包数据格式B-detours劫持060-C,C写代码HOOK分析封包数据格式C-过滤和格式化061-C,C写代码HOOK分析封包数据格式D-写入配置文件062-C,C写代码HOOK分析封包…...

【网络】路由器和交换机的区别

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的帮助&#x1…...

SQL的CASE WHEN函数、CAST函数、CONVERT() 函数、COALESCE()函数、DATEDIFF()函数

一、CASE WHEN简单使用 SELECT CASE WHEN age > 18 AND age < 25 THEN 18-25WHEN age > 25 AND age < 35 THEN 25-35WHEN age > 35 AND age < 45 THEN 36-45ELSE 45END AS age_groupFROM peopleGROUP BY age_group;二、CASE WHEN语句与聚合函数一起使用 SE…...

前后端分离计算机毕设项目之基于springboot+vue的房屋租赁系统《内含源码+文档+部署教程》

博主介绍&#xff1a;✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久&#xff0c;选择我们就是选择放心、选择安心毕业✌ &#x1f345;由于篇幅限制&#xff0c;想要获取完整文章或者源码&#xff0c;或者代做&am…...

《Spring框架前世今生》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

基于树种优化的BP神经网络(分类应用) - 附代码

基于树种优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于树种优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.树种优化BP神经网络3.1 BP神经网络参数设置3.2 树种算法应用 4.测试结果&#xff1a;5.M…...

纳百川冲刺创业板上市:计划募资约8亿元,宁德时代为主要合作方

近日&#xff0c;纳百川新能源股份有限公司&#xff08;下称“纳百川”&#xff09;向深交所创业板递交的上市申请材料获得受理&#xff0c;浙商证券为其独家保荐人。 本次冲刺上市&#xff0c;纳百川计划募资8.29亿元&#xff0c;将用于纳百川&#xff08;滁州&#xff09;新能…...

light client轻节点简介

1. 引言 前序博客&#xff1a; Helios——a16z crypto构建的去中心化以太坊轻节点 去中心化和自我主权对于Web3的未来至关重要&#xff0c;但是这些理想并不总适用于每个项目或应用程序。在非托管钱包和bridges等工具中严格优先考虑安全性而不是便利性的用户&#xff0c;可选…...

1500*B. Zero Array(贪心数学找规律)

Problem - 1201B - Codeforces 解析&#xff1a; 因为每次减少2&#xff0c;如果总和为奇数肯定无法实现。 特例&#xff0c;如果某个数大于其他所有数的总和&#xff0c;同样无法实现。 其他均可实现。 #include<bits/stdc.h> using namespace std; #define int long l…...

java Spring Boot整合jwt实现token生成并验证效果

先在 pom.xml 文件中注入依赖 <!-- JWT --> <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.11.2</version> </dependency> <dependency><groupId>io.jsonw…...

基础-MVP图像处理-仿射变换

仿射变换算子可以将输入图像矩形区域的图像进行变换&#xff0c;并生成新的矩形输出图像。 可对图像进行截取、缩放、倾斜、旋转等操作&#xff0c;矫正图像到无倾斜&#xff0c;配合其他算子使用。 配置界面&#xff1a;可以调整其位置、大小、旋转和倾斜程度&#xff0c;缩放…...

Linux嵌入式学习之Ubuntu入门(六)shell脚本详解

系列文章内容 Linux嵌入式学习之Ubuntu入门&#xff08;一&#xff09;基本命令、软件安装、文件结构、编辑器介绍 Linux嵌入式学习之Ubuntu入门&#xff08;二&#xff09;磁盘文件介绍及分区、格式化等 Linux嵌入式学习之Ubuntu入门&#xff08;三&#xff09;用户、用户组…...

学习完C++ 并发编程后 手写线程池 最简单的线程池

目录 精简版注释&#xff1a; //线程安全的队列容器&#xff08;精简版&#xff09; 最简易可行的线程池&#xff08;精简版&#xff09; 详细版注释&#xff1a; //线程安全的队列容器&#xff08;详细版&#xff09; 最简易可行的线程池&#xff08;详细版&#xff0…...

【Overload游戏引擎分析】编辑器对象鼠标拾取原理

Overload的场景视图区有拾取鼠标功能&#xff0c;单击拾取物体后会显示在Inspector面板中。本文来分析鼠标拾取这个功能背后的原理。 一、OpenGL的FrameBuffer 实现鼠标拾取常用的方式有两种&#xff1a;渲染id到纹理、光线投射求交。Overload使用的是渲染id到纹理&#xff0c…...

【Spring内容进阶 | 第三篇】AOP进阶内容

前言&#xff1a; 在前面我们已经粗略的介绍了什么是AOP以及各种基础知识点&#xff0c;而本篇我们将聚焦于AOP的细节&#xff0c;详细的讲解一下AOP中的通知类型&#xff0c;通知顺序&#xff0c;切入点表达式以及连接点。通过对AOP的熟练掌握&#xff0c;我们可以快速编写出低…...

华为云ModelArts:引领AI艺术创作的未来,让人人都可以成为“艺术家”!

随着科技的飞速发展,艺术创作逐渐告别传统的画布和画笔,开始走向数字化、智能化的新时代。在这个蓬勃发展的领域中,华为云ModelArts以其强大的功能和出色的性能引领着AI艺术创作的未来。 华为云ModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处…...

Elasticsearch:如何从 Elasticsearch 集群中删除数据节点

Elasticsearch 集群通常包含多个节点&#xff0c;并且可能存在需要从集群中删除节点的情况。 应谨慎执行此过程&#xff0c;以确保数据的完整性和可用性。 在本文中&#xff0c;我们将引导你完成从 Elasticsearch 集群安全删除节点的步骤。 确保集群是绿色的 在尝试从 Elastic…...

长假回归,回顾一下所有的电商API接口

淘宝API接口 item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论 获取测试keyitem_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上下架时间seller_info 获得淘宝店铺详情item_search…...

认识计算机主板

目录 定义主要部件简单图示 主要功能 定义 计算机主板&#xff08;Motherboard&#xff09;是计算机系统中的核心组件之一&#xff0c;也被称为系统板、主板或母板。它是一个电子电路板&#xff0c;用于连接和支持计算机的各种硬件组件&#xff0c;包括中央处理器&#xff08;…...

PHP乱七八糟面试题

1、请解释PHP中的JWT是什么&#xff1f; JWT&#xff08;JSON Web Token&#xff09;是一种用于认证和授权的标准&#xff0c;可以在不同的系统之间安全地传递信息。 在PHP中&#xff0c;可以使用各种JWT库来生成和解析JWT&#xff0c;JWT包含了一些元数据和签名&#xff0c; …...

网页游戏排行榜前十不用氪金/沈阳专业seo排名优化公司

如果仅仅是同样大小的背景(灰色或者黑色),则只要新建一个和比原图大三个像素的文件(比如这里原图片为100100,我就建立一个103103的文件)把图片放在左上角,剩下的部分填充灰色或者黑色。然而这样做出来的效果比较差&#xff0c;一般不采用。 真正的边框往往都有两层渐变&#xf…...

拼团购物网站怎么做/上海培训机构有哪些

很多人学习面向对象和设计模式&#xff0c;往往是为了技术而技术&#xff0c;只是学到了形式&#xff0c;很僵化。这都是因为没有把握好技术的目的是为了什么。对于设计来说&#xff0c;他的目的就是为了方便软件开发和软件维护。 不提倡滥用设计&#xff0c;在于设计是和你当…...

政府网站建设 2017年/海外域名

1.不要看到别人的回复第一句话就说&#xff1a;给个代码吧&#xff01;你应该想想为什么。当你自己想出来再参考别人的提示&#xff0c;你就知道自己和别人思路的差异。2.初学者请不要看太多太多的书那会误人子弟的&#xff0c;先找本系统的学&#xff0c;很多人用了很久都是只…...

上海招聘用的最多的网站/陕西seo关键词优化外包

1&#xff0c;前言 Qt在开发软件界面方面有着极大的便捷性&#xff0c;灵活的ui设计器简直是把神器&#xff0c;以前MFC或DUI要调整半天的界面&#xff0c;Qt分分钟搞定。 另一个优点&#xff0c;就是融入了类似web的css样式表的方法&#xff0c;可以自由地对界面进行美化设计…...

网站做下子压缩文件的链接/semir是什么意思

Association&#xff1a;处理单一的关联对象 处理单一属性的关联关系 property&#xff1a;注入给员工中哪个属性 select&#xff1a;发送哪一条sql语句 javaType&#xff1a;把sql语句查询出的结果集&#xff0c;封装给哪个类的对象&#xff08;可以省略&#xff09; column&a…...

网站只显示一个网址/提高基层治理效能

转载请注明出处&#xff1a;http://blog.csdn.net/u010019717更全的内容请看我的游戏蛮牛地址&#xff1a;http://www.unitymanual.com/space-uid-18602.html &#xfeff;&#xfeff;属性 &#xff08;Attribute&#xff09;使用 Unity 的C#语言 &#xff0c;利用属性&#…...