K8s内存溢出问题剖析:排查与解决方案

文章目录

  • 一、背景
  • 二、排查方案:
    • 1. 可能是数据量超出了限制的大小,检查数据目录大小
    • 2. 查看是否是内存溢出
      • 2.1 排查数据量(查看数据目录大小是否超过limit限制)
      • 2.2 查看pod详情发现问题
  • 三、解决过程

一、背景

做redis压测过程中,发现paas环境的redis被OOMKill老是不断重启
在这里插入图片描述
Pod日志:
在这里插入图片描述

二、排查方案:

1. 可能是数据量超出了限制的大小,检查数据目录大小

2. 查看是否是内存溢出

开始排查

2.1 排查数据量(查看数据目录大小是否超过limit限制)

limit限制为64G 查到数据目录占用很少 忽略此问题
在这里插入图片描述

2.2 查看pod详情发现问题

在这里插入图片描述
为了更准确的定位问题,查看是否是内存泄露问题,查看系统参数(正常是没有输出)
在这里插入图片描述
确定是由于压测导致的Cgroup内存泄露问题
定位原因以后解决问题 :处理内存泄露问题(试了三个方案才得以解决)

三、解决过程

方案一:(修改grub文件)

  1. 修改/etc/default/grub 为:
    GRUB_CMDLINE_LINUX=“crashkernel=auto net.ifnames=0 biosdevname=0 intel_pstate=disable cgroup.memory=nokmem”
    是追加 GRUB_CMDLINE_LINUX=“console=tty0 console=ttyS0 crashkernel=512M-2G:128M,2G:512M rd.lvm.lv=bel/root rhgb quiet cgroup.memory=nokmem” 把 cgroup.memory=nokmem
    追加到最后即可
  2. 生成配置: /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
  3. 重启机器: reboot
  4. 验证: cat /sys/fs/cgroup/memory/kubepods/burstable/pod*/*/memory.kmem.slabinfo 无输出即可。
  5. x版本cgroup.memory存在bug,docker或其他使用cgroup.memory中kmem功能的应用会造成slab内存泄漏 部分系统可以通过升级到4.x的修复版本来解决,或者通过 cgroup.memory=nokmem 启动项来规避。 部分系统不支持cgroup.memory=nokmem 启动项,可以通过 cgroup_disable=memory 启动项来规避。(此方案解决部分机器,并未全部解决)

方案二:(升级内核、Iaas建议)
由于服务器均为多系统,可以进行此操作
在这里插入图片描述
既然是 3.x 的问题,直接升级内核到 5.x 及以上即可,内核问题解释: https://github.com/torvalds/linux/commit/d6e0b7fa11862433773d986b5f995ffdf47ce672 https://support.mesosphere.com/s/article/Critical-Issue-KMEM-MSPH-2018-0006
这种方式的缺点是: 需要升级所有节点,节点重启的话已有 pod 肯定要漂移,如果节点规模很大,这个升级操作会很繁琐,业务部门也会有意见,要事先沟通。 这个问题归根结底是软件兼容问题,3.x 自己都说了不成熟,不建议你使用该特性,k8s、docker却 还要开启这个属性。(此方案并不奏效)

方案三:(grubby在线修改内核参数)
查看当前内核版本
在这里插入图片描述

--update-kernel 为当前内核版本文件
grubby --args=cgroup.memory=nokmem --update-kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64

重启主机 查看系统参数 (显示正常)
在这里插入图片描述
查看pod正常运行
在这里插入图片描述
附加知识点:(内存buff占用清理 -hcache)

wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache
chmod 755 hcache && mv hcache /usr/local/bin/
hcache --top 10

查看内存 free -h
在这里插入图片描述
buffers: 用于块设备数据缓冲,记录文件系统metadata(目录,权限,属性等)
cached: 用于文件内容的缓冲

分别查看
在这里插入图片描述
清理缓存

  1. 仅清除页面缓存(PageCache)
  2. sync; echo 1 > /proc/sys/vm/drop_caches
  3. 清除目录项和inode
  4. # sync; echo 2 > /proc/sys/vm/drop_caches
  5. 清除页面缓存,目录项和inode
  6. # sync; echo 3 > /proc/sys/vm/drop_caches

清理交换空间:swapoff -a && swapon -a

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

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

相关文章

python3 + selenium 中用PIL获取全屏幕截图

获取当前屏幕截图非常简单,需要import PIL.ImageGrab。调用grab函数即可得到Image对象,显示图片如图所示。 高版本的PIL中的grab函数还提供有一些参数。要查看当前PIL包的版本,可以import然后查看其__version__属性。 如果是较高版本的PIL…

openssl编译安装升级为新版本

文章目录 1、下载版本2、上传并解压3、编译安装4、验证 1、下载版本 https://www.openssl.org/source/old/1.1.1/ 2、上传并解压 tar zxvf openssl-1.1.1s.tar.gz 3、编译安装 注意:要提前安装好 gcc perl cd openssl-1.1.1s ./config --prefix/usr/local/open…

请求(request)

目录 前言 request概述 request的使用 获取前端传递的数据 实例 请求转发 特点 语法 实例 实例1 实例2 【关联实例1】 域对象 组成 作用范围: 生命周期: 使用场景: 使用步骤 存储数据对象 获得数据对象 移除域中的键值…

2039:【例5.6】冒泡排序

【题目描述】 编程输入n(1≤n≤20)个小于1000非负整数,然后自动按从大到小的顺序输出。(冒泡排序) 【输入】 第一行,数的个数n; 第二行,n个非负整数。 【输出】 由大到小的n个非负整数,每个数占一行。 【输…

离线安装 Docker-IO:详细步骤指南

离线安装 Docker-IO:详细步骤指南 一、准备工作1.1 下载 Docker 离线安装包1.2 准备安装环境1.3 配置防火墙和 SELinux(可选)二、上传和解压离线安装包2.1 上传安装包2.2 解压安装包三、安装 Docker-IO3.1 移动 Docker 文件到系统目录3.2 配置 Docker 服务3.3 赋予服务文件执…

python图像彩色数字化

效果展示&#xff1a; 目录结构&#xff1a; alphabets.py GENERAL {"simple": "%#*-:. ","complex": "$B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_~<>i!lI;:,\"^. " } # Full list could be found here…

.net core 创建linux服务,并实现服务的自我更新

目录 创建服务创建另一个服务&#xff0c;用于执行更新操作给你的用户配置一些systemctl命令权限 创建服务 /etc/systemd/system下新建服务配置文件&#xff1a;yourapp.service&#xff0c;内容如下&#xff1a; [Unit] Descriptionyourapp Afternetwork.target[Service] Ty…

TongWeb8 错误码查询方法及说明

TongWeb8可通 过 ./admin.[bat|sh] error-code [Error Code] 命令查 找错误码 说 明。 如&#xff1a;./admin.sh error-code 显示所有错误码说明。 ./admin.sh error-code 008 显示008错误码的说明。 Execute the command: error-code ****** TongWeb ErrorCode Info ***…

宠物空气净化器推荐2024超详细测评 希喂VS霍尼韦尔谁能胜出

最近有粉丝一直在评论区和后台探讨宠物空气净化器是不是智商税的问题&#xff0c;有人认为宠物空气净化器肯定不是智商税&#xff0c;有些人认为将其购回家就是个没用的东西&#xff0c;还占地方&#xff0c;双方各有自己的观点。 其实宠物空气净化器和普通的空气净化器是有很大…

屏幕分辨率|尺寸|颜色深度指纹

一、前端通过window.screen接口获取屏幕分辨率 尺寸 颜色深度&#xff0c;横屏竖屏信息。 二、window.screen c接口实现&#xff1a; 1、third_party\blink\renderer\core\frame\screen.idl // https://drafts.csswg.org/cssom-view/#the-screen-interface[ExposedWindow ] …

3mf 格式详解,javascript加载导出3mf文件示例

3MF 格式详解 3MF&#xff08;3D Manufacturing Format&#xff09;是一种开放标准的文件格式&#xff0c;专门用于三维制造和打印。3MF 格式旨在解决 STL 格式的局限性&#xff0c;提供更丰富和灵活的数据表示。3MF 文件是一种 ZIP 文件&#xff0c;其中包含了描述三维模型的…

Unity UGUI 垂直循环复用滚动

一 基础类 在unity里面新建这几个类 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// <summary> /// 垂直方向滚动 /// </summary> public class CustomScroll:MonoBehaviour {public …

Spring Boot整合Redis Stack构建本地向量数据库相似性查询

Spring Boot整合Redis Stack构建本地向量数据库相似性查询 在微服务架构中&#xff0c;数据的高效存储与快速查询是至关重要的。Redis作为一个高性能的内存数据结构存储系统&#xff0c;不仅可以用作缓存、消息代理&#xff0c;还可以扩展为向量数据库&#xff0c;实现高效的相…

[OS] A4-前菜介绍

从你的描述来看&#xff0c;这段话是给你的一些 预备知识 和 mkfs工具的使用 提示&#xff0c;帮助你了解如何构建和管理文件系统&#xff0c;特别是关于 xv6 文件系统的一些基本操作。 我会通过比喻和通俗化的方式逐步解释&#xff1a; 预备知识&#xff1a;xv6 文件系统的基…

LLM学习笔记(10)Transformers 库与 pipeline() 函数(下)

自动问答&#xff08;QA&#xff09; 自动问答&#xff08;QA&#xff09;的功能介绍 自动问答&#xff08;Question-Answering, QA&#xff09; 是自然语言处理中的一项任务&#xff0c;用于从给定的上下文中找到问题的答案。基于 Hugging Face 的 pipeline&#xff0c;可以…

vue中如何获取public路径

在Vue项目中获取public路径的方法有多种&#xff0c;主要通过以下1、使用相对路径、2、使用环境变量、3、使用webpack配置三种方式来实现。这些方法可以帮助开发者在项目中更灵活地使用静态资源。下面将详细解释每种方法以及如何使用它们。 一、使用相对路径 在Vue项目中&#…

Android 14之HIDL转AIDL通信

Android 14之HIDL转AIDL通信 1、interface接口1.1 接口变更1.2 生成hidl2aidl工具1.3 执行hidl2aidl指令1.4 修改aidl的Android.bp文件1.5 创建路径1.6 拷贝生成的aidl到1和current1.7 更新与冻结版本1.8 编译模块接口 2、服务端代码适配hal代码修改2.1 修改Android.bp的hidl依…

数据结构代码合集

一、排序算法 1、插入排序 1.1 直接插入排序 void InsertSort(int A[],int n){int temp,i,j; for( i 1;i<n;i){ //外循环&#xff0c;每个元素都要进行排序 if(A[i-1]>A[i]){ //前面元素比后面元素大的话 temp A[i];for( j i-1; A[j]>temp && j>0…

《硬件架构的艺术》笔记(九):电磁兼容性能设计指南

简介 电子线路易于接收来自其他发射器的辐射信号&#xff0c;这些EMI&#xff08;电磁干扰&#xff09;使得设备内毗邻的元件不能同时工作。这就有必要进行电磁兼容设计以避免系统内有害的电磁干扰。 确保设备不产生多余的辐射&#xff0c;设备也不易受到射频辐射的干扰&…

Day31 贪心算法 part05

56. 合并区间 本题也是重叠区间问题&#xff0c;如果昨天三道都吸收的话&#xff0c;本题就容易理解了。 代码随想录 class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, (a,b) -> Integer.compare(a[0], b[0]));List<int[]> result …