排查线上环境内存溢出(OOM)

2024-05-25 15:12

本文主要是介绍排查线上环境内存溢出(OOM),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、先使用命令列出所有已运行的容器

docker ps
[root@dasdadsd ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED        STATUS        PORTS                                       NAMES
71c935097187   redis:6.0    "docker-entrypoint.s…"   8 weeks ago    Up 8 weeks    0.0.0.0:5655->6379/tcp, :::5122->6379/tcp   redis
c321a5c56eab   smessage:1   "/bin/sh -c 'java -j…"   2 months ago   Up 2 months   0.0.0.0:4545->4565/tcp, :::5123->3123/tcp   smessage

2、找到容器进入

docker exec -it [容器id] /bin/bash
[root@dasdadsd ~]# docker exec -it c32 /bin/bash
root@c321a5c56eab:/# 

3、我这里使用的是top指令查看

root@dasdadsd :/# top
top - 13:02:50 up 86 days,  4:20,  0 users,  load average: 0.05, 0.05, 0.01
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.7 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1995464 total,  1617408 used,   378056 free,   116708 buffers
KiB Swap:  1049596 total,   273408 used,   776188 free.   388496 cached MemPID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                      7 root      20   0 2528792 384840   4076 S  0.3 19.3 124:35.79 java                                                                                         1 root      20   0    4336     88      0 S  0.0  0.0   0:00.02 sh                                                                                           1102 root      20   0   21960    760    252 S  0.0  0.0   0:00.02 bash                                                                                         8014 root      20   0   21960    788    280 S  0.0  0.0   0:00.03 bash                                                                                         8584 root      20   0   21960    760    256 S  0.0  0.0   0:00.02 bash                                                                                         
10153 root      20   0   21960   3504   2996 S  0.0  0.2   0:00.03 bash                                                                                         
10175 root      20   0   23636   2656   2288 R  0.0  0.1   0:00.00 top                                                                                          
11097 root      20   0   21956    756    252 S  0.0  0.0   0:00.03 bash                                                                                         
15019 root      20   0   21956    772    264 S  0.0  0.0   0:00.04 bash                                                                                         
24749 root      20   0   21960    768    264 S  0.0  0.0   0:00.03 bash                                                                                         
30518 root      20   0   21960    788    280 S  0.0  0.0   0:00.02 bash                                                                                         
31525 root      20   0   21960    760    252 S  0.0  0.0   0:00.02 bash                                                                                         
32165 root      20   0   21960    776    268 S  0.0  0.0   0:00.02 bash    

找到java的pid为7

4、使用 下面的命令进行分析 

jmap -histo [java进程号] | head -[展示行数]
root@c321a5c56eab:/# jmap -histo 7|head -20num     #instances         #bytes  class name
----------------------------------------------1:         38723       53068200  [B2:        165183       41040304  [C3:          6379       22771536  [I4:        467926       14973632  java.util.HashMap$Node5:        203504        6512128  com.mysql.cj.conf.BooleanProperty6:         15270        5198864  [Ljava.util.HashMap$Node;7:        114471        3663072  com.mysql.cj.conf.StringProperty8:        151533        3636792  java.lang.String9:         72718        2908720  java.util.TreeMap$Entry10:         56327        1802464  com.mysql.cj.conf.IntegerProperty11:         26419        1200112  [Ljava.lang.Object;12:         22626        1086048  java.util.HashMap13:          9319        1030968  java.lang.Class14:         31635        1012320  java.util.concurrent.ConcurrentHashMap$Node15:          9791         861608  java.lang.reflect.Method16:         39255         628080  java.lang.Object17:         16936         541952  java.util.Hashtable$Entry

这就看出来每个类栈的内存了

这篇关于排查线上环境内存溢出(OOM)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001865

相关文章

C++对象布局及多态实现探索之内存布局(整理的很多链接)

本文通过观察对象的内存布局,跟踪函数调用的汇编代码。分析了C++对象内存的布局情况,虚函数的执行方式,以及虚继承,等等 文章链接:http://dev.yesky.com/254/2191254.shtml      论C/C++函数间动态内存的传递 (2005-07-30)   当你涉及到C/C++的核心编程的时候,你会无止境地与内存管理打交道。 文章链接:http://dev.yesky

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

UnrealScriptIDE调试环境部署

先安装vs2010   再安装VSIsoShell.exe, 下载地址 https://pan.baidu.com/s/10kPNUuDGTbWXbz7Nos-1WA       fd3t   最后安装unside,下载地址 https://archive.codeplex.com/?p=uside  安装中间有一步选择Binary文件夹要选对路径。   安装好以后,启动 UDKDe

API-环境对象

学习目标: 掌握环境对象 学习内容: 环境对象作用 环境对象: 指的是函数内部特殊的变量this,它代表着当前函数运行时所处的环境。 作用: 弄清楚this的指向,可以让我们代码更简洁。 函数的调用方式不同,this指代的对象也不同。【谁调用,this就是谁】是判断this指向的粗略规则。直接调用函数,其实相当于是window.函数,所以this指代window。

Pycharm配置conda环境(解决新版本无法识别可执行文件问题)

引言: 很多小伙伴在下载最新版本的pycharm或者更新到最新版本后为项目配置conda环境的时候,发现文件夹目录中无法显示可执行文件(一般为python.exe),以下就是本人遇到该问题后试验和解决该问题的一些方法和思路。 一般遇到该问题的人群有两种,一种是刚入门对pycharm进行conda环境配置的小白(例如我),不熟悉相关环境配置的操作和过程,还有一种是入坑pycharm有段时间的老手

Android SurfaceFlinger——图形内存分配器(十一)

前面的文章中的图层合成器(HWC),这里我们接着看一下 SurfaceFlinger 中的另一个重要服务——图形内存分配器。 一、简介         android.hardware.graphics.allocator@2.0 是 Android 系统中硬件抽象层(HAL)的一个组件,专门用于图形内存的分配和管理。它是 SurfaceFlinger 在处理图形数据时所依赖的

Redis-在springboot环境下执行lua脚本

文章目录 1、什么lua2、创建SpringBoot工程3、引入相关依赖4、创建LUA脚本5、创建配置类6、创建启动类7、创建测试类 1、什么lua “Lua”的英文全称是“Lightweight Userdata Abstraction Layer”,意思是“轻量级用户数据抽象层”。 2、创建SpringBoot工程 3、引入相关依赖 <?xml version

cocospod 搭建环境和使用

iOS 最新版 CocoaPods 的安装流程 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sources -a https://ruby.taobao.org/ 3.验证新源是否替换成功 $gem sources -l 4.安装CocoaPods (1)  $sudo gem

逆向学习汇编篇:内存管理与寻址方式

本节课在线学习视频(网盘地址,保存后即可免费观看): ​​https://pan.quark.cn/s/3ceeb9ae6d98​​ 在汇编语言的世界中,内存管理和寻址方式是构建程序的基础。理解这些概念不仅对于编写高效的汇编代码至关重要,也是进行逆向工程分析的关键技能。本文将深入探讨内存管理的基本原则和多种寻址方式,并通过代码案例来展示它们的实际应用。 1. 内存管理 内存管理涉及如何分配