kube-apiserver内存占用过多 go tool pprof 入门

news2024/11/17 21:16:35

目录

  • 环境
  • 问题
  • 排查
    • 1、kube-apiserver %CPU 146 正常,%MEM 高达70,,load average 400+,出现kswapd0进程。
    • 2、k describe node 看到 SystemOOM
    • 3、是否大量连接导致?
    • 4、通过prom查看指标
    • 5、访问K8s API
    • 6、pprof 火焰图
  • 解决方案
    • 1、prometheus 配置GOMEMLIMIT参数,limit的一半
    • 2、kube-apiserver优化?

环境

K8s:v1.18
OS:Kylin v10 (Tercel) 4.19.90-23.8.v2101
docker:19.3.15
CPU:kunpeng-920 16c64g

问题

节点NotReady,SystemOOM。

排查

1、kube-apiserver %CPU 146 正常,%MEM 高达70,,load average 400+,出现kswapd0进程。

2、k describe node 看到 SystemOOM

ContainerGCFailed - 容器垃圾数据收集失败。

SystemOOM - System OOM encountered, victim process: prometheus

journalctl --no-pager --unit kubelet | grep "sys oom"

docker stats --no-stream |grep -E 'kube-apiserver|prometheus'

https://cloud.tencent.com/developer/article/2289874

3、是否大量连接导致?

netstat -nat | grep -i "6443" | wc -l
ss -nat | grep -i "6443" | wc -l

如何解决“kube-apiserver 负载不均衡的问题”

Nginx四层代理

4、通过prom查看指标

apiserver_request_duration_seconds_bucket
apiserver_request_total

kube-apiserver组件监控指标及大盘使用说明

5、访问K8s API

kubectl proxy --disable-filter --address='0.0.0.0':& 

kubectl proxy 运行Kubectl的机器和kubernets apiserver之间的一个反向代理

curl 127.0.0.1:8001/metrics |grep apiserver_request_duration_seconds_bucket|more

curl 127.0.0.1:8001/metrics |grep apiserver_request_total|more

6、pprof 火焰图

go tool pprof -http=0.0.0.0:30065  127.0.0.1:8001/debug/pprof/profile?seconds=300

go tool pprof --http=0.0.0.0:30065 x.x.x.:8001/debug/pprof/heap

curl 127.0.0.1:8001/debug/pprof/profile?seconds=300 > api.profile

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

使用pprof对程序进行性能剖析

解决方案

1、prometheus 配置GOMEMLIMIT参数,limit的一半

Go内存优化与垃圾收集

2、kube-apiserver优化?

1)参数-解决gc慢
2)负载不均衡

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

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

相关文章

某方protobuf闲谈

问题 当我们去看某方的时候,搜索了关键词svm,然后通过抓包查看,请求的Request Payload是一串看不懂的乱码,并且返回的数据也大部分是乱码 观察请求的Content-Type是application/grpc-web+proto,没错数据的传输是protobuf的形式了 protobuf的相关概念和原理,网上有很多教…

火山引擎“奇袭”阿里云

图片|电影《美国队长3》剧照 ©自象限原创 作者丨程心 编辑丨罗辑 大模型价格战,已经不是什么新闻。 从OpenAI发布GPT-4o,将API价格下调50%,并宣布面向普通用户免费开始,就标志着大模型的竞争从性能进入到了成本…

CSS单位px、rem、em、vw、vh的区别

目录 前言 零.视口介绍 一.px 二.em 三.rem【重要】 3.1rem介绍 3.2rem与em的区别 四.vw、vh、vmax、vmin 五.注意问题 5.1如何使1rem 10px? 5.2如果父元素没有指定高度,那么子元素的百分比高度是多少? 5.3更多问题 前言 这几…

【MySQL】——并发控制

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

手机端如何访问本地vue+vite项目,实现实时调试?

一、应用场景 h5(vuevite)嵌入app后,出现某种问题时,需要每次发布坏境后,才能才看效果,这种来回很耗时间,本文章在于解决手机端直接访问本地启动应用项目,无需重复发布坏境 二、实…

南京观海微电子---2种 电流检测中的高低边采样电阻和共模抑制比问题

电流检测有两种方法: 一种是用封装好的电流检测芯片采样电阻; 另一种是自己搭建运放电路 高端检测: 低端检测: 自己搭建运放电路:(这种对电阻的精度要求较高,对称电路中电阻的一致性&#xff…

WindowsCMD窗口配置OhMyPosh

WindowsCMD窗口配置OhMyPosh 文章目录 WindowsCMD窗口配置OhMyPosh1. 按装Clink1. 安装Oh-My-Posh2. 安装Clink2. 安装后的位置 2. 编写Lua脚本1. oh-my-posh Lua脚本2. 重启cmd窗口看效果 OhMyPosh对Windows CMD 没有现成的支持。 然而可以使用Clink来做到这一点,它…

【线程的互斥】

线程的互斥 临界区资源多个线程的运行多个线程对同一资源的竞争原子性保持线程之间地互斥互斥量(锁的原理)为什么是原子的 正确使用锁 临界区资源 进程创建线程,是共享内存的,可以对共享的资源有很方便的操作,当一些共享资源可以被多个线程进…

【编译原理--- 汇编、编译、解释系统】

汇编、编译、解释系统 1.编译方式和解释方式 程序种类是否生成目标程序是否参与程序的运行过程程序执行速度可移植性编译程序生成不参与快差解释程序不生成参与慢好 编译方式过程:词法分析、语法分析、语义分析、(中间代码生成、代码优化、&#xff0…

重生奇迹MU格斗家上手最轻松的职业

重生奇迹MU格斗家玩法攻略,有一个比较奇葩的职业,那就是格斗家。格斗家拥有其他职业没有的优势,就是加体力和敏捷都可以提升攻击力百分比。格斗家玩法攻略 目前格斗家最多的就是敏格玩法,配合智力MM加成后的幽冥光速拳可以说是第…

修改VSCode中md文件中上传图片的路径

vs上打开md上传一个图片默认的路径是当前文件夹,可以发现,图片一多,非常的乱。 我们希望的是在单独的一个文件中存放图片即可。 使用ctrl , 快捷键,输入markdown 添加一个新的key/value。 **/*.md assets/${documentBaseName}/…

抖音运营_如何做好抖音直播

目录 如何做好抖音直播 一 带货主播应具备的技能 1 专业技能 2 语言表达能力 3 场控应变技能 4 熟悉平台规则 二 选品技巧 1 选择与账号属性相关的产品 2 选择试用过的产品 3 选择热销产品 4 选择低客单价产品 三 直播间产品的管理 四 打造转化率高的直播间 1 突出…

探秘SpringBoot默认线程池:了解其运行原理与工作方式(@Async和ThreadPoolTaskExecutor)

文章目录 文章导图Spring封装的几种线程池SpringBoot默认线程池TaskExecutionAutoConfiguration(SpringBoot 2.1后)主要作用优势使用场景如果没有它 2.1版本以后如何查看参数方式一:通过Async注解--采用ThreadPoolTaskExecutordetermineAsync…

Jenkins 构建 Maven 项目:构建服务器和部署服务器分离的情况

bash内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep java …

C# 深拷贝和浅拷贝

文章目录 1.深拷贝2.浅拷贝3.拷贝类4.浅拷贝的实现5.深拷贝实现5.1 浅拷贝对象,对引用类型重新一个个赋值5.2 反射实现5.3 利用XML序列化和反序列化实现 1.深拷贝 拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。…

聊聊ChatGPT的本质

这是鼎叔的第九十八篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 阶段性总结下我对ChatGPT的基础理解,算是一篇学习思考笔记吧。其中难免有很多不准确的,或过于简略的地方,将来再迭代学习。 OpenAI做ChatGPT的底层逻辑…

mfc140.dll丢失原因和mfc140.dll丢失修复办法分享

mfc140.dll是与微软基础类库(Microsoft Foundation Classes, MFC)紧密相关的动态链接库(DLL)文件。MFC是微软为C开发者设计的一个应用程序框架,用于简化Windows应用程序的开发工作。以下是mfc140.dll文件的一些关键属性…

spring boot 整合j2cache 项目启动警告 Redis mode [null] not defined. Using ‘single‘

好 之前的文章 spring boot 整合j2cache 基础操作 在spring boot环境中整合了 j2cache 我们 项目启动时 日志会有一个关键信息 Redis的模式 没有定义 默认使用 single Redis 的这个模式有四种 大家可以自己去网上找一下 做个了解 不用很纠结 我们直接在 j2cache.properties …

医院门诊互联电子病历|基于SSM+vue的医院门诊互联电子病历管理信息系统的设计与实现(源码+数据库+文档)

医院门诊互联电子病历管理信息系统 目录 基于SSM+vue的医院门诊互联电子病历管理信息系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2后台登录模块 5.2.1管理员功能 5.2.2用户功能 5.2.3医生功能 四、数据库设计 五、核心代码…

requests_html使用介绍

文章目录 一、requests_html 基本介绍二、requests_html 基本使用三、发送带有参数的请求四、图片抓取实战案例 一、requests_html 基本介绍 A、装库: pip install requests_html B、介绍: requests 和 requests_html 是同一个作者 二、requests_html 基本使用 A、导包: fro…