网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
高级运维工程师带你解决生产服务器某软件进程占用过高物理内存实战案例全网唯一
一、生产事故描述
应用java程序报内存溢出,redis也爆内存不足!操作系统内存剩余不足,很典型服务器内存不足,但是实际情况是java与redis已经设置最大内存限制,那剩余50%内存是那个进程占的呢?这个软件的进程与Java进程跟redis进程跟操作系统互相争夺内存!我们遇到这类问题怎么排查?笔者我给个思路与方法!
二、监控分析方法
进入linux服务器 top命令
top
在 Linux 系统中,top
命令用于显示系统的负载情况。top
命令的输出包含了很多方面的数据,例如 CPU、内存、系统的任务等。其部分字段含义如下:
- VIRT:virtual memory usage,进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等。
- RES:resident memory usage,进程当前使用的内存大小,但不包括
swap out
。 - SHR:shared memory,除了自身进程的共享内存,也包括其他进程的共享内存。
- DATA:数据占用的内存,如果
top
没有显示,按f
键可以显示出来。
你可以通过top
的内部命令对进程的显示方式进行控制。如:
s
:改变画面更新频率。l
:关闭或开启第一部分第一行top
信息的表示。t
:关闭或开启第一部分第二行Tasks
和第三行Cpus
信息的表示。m
:关闭或开启第一部分第四行Mem
和第五行Swap
信息的表示。N
:以 PID 的大小的顺序排列表示进程列表。P
:以 CPU 占用率大小的顺序排列进程列表。M
:以内存占用率大小的顺序排列进程列表。h
:显示帮助。n
:设置在进程列表所显示进程的数量。q
:退出top
。
如果你想了解更多关于top
命令的信息,可以继续向我提问。
按占用内存排序只取前5名
在 Linux 系统中,你可以使用top
命令来查看进程的内存使用情况,并按照内存占用率进行排序。具体步骤如下:
- 打开终端窗口,并输入以下命令:
top
按下回车键后,你将看到一个实时更新的进程列表。默认情况下,进程按照 CPU 使用率排序。
2. 要按照内存使用率排序,可以按下 Shift + M 键。接下来,你将看到占用内存最高的进程列表。
3. 通常,列表的第一行是系统进程,可以忽略。你需要关注的是列表中的前五个进程,它们是占用内存最高的进程。
每个进程的信息包括进程 ID(PID)、用户、CPU 使用率、内存使用率、进程名称等。你可以根据需要查看更多详细信息,例如进程的命令行参数、线程数等。
然后主意排查可疑的进程,按进程名去逐一排查!
三、笔者实际案例解决介绍
笔者用的是麒麟V10操作系统
一、核实操作系统信息
银河麒麟高级服务器操作系统简介:
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主机系统可靠性、安全性、性能、扩展性和实时性等需求,依据CMMI5级标准研制的提供内生本质安全、云原生支持、自主平台深入优化、高性能、易管理的新一代自主服务器操作系统;同源支持飞腾、龙芯、申威、兆芯、海光、鲲鹏等自主平台;应用于政府、国防、金融、教育、财税、公安、审计、交通、医疗、制造等领域。
uname -a
Linux localhost.localdomain 4.19.90-23.8.v2101.ky10.x86_64 #1 SMP Mon May 17 17:08:34 CST 2021 x86\_64 x86\_64 x86\_64 GNU/Linux
cat /proc/version
Linux version 4.19.90-23.8.v2101.ky10.x86_64 (KYLINSOFT@localhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Mon May 17 17:08:34 CST 2021
cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"
二、分析出占用最大可疑进程
麒麟V10 mate-indicators、 auditd进程占用内存过高问题
查看麒麟版本V10版本、开源补丁包链接、内存泄漏临时处理和永久处理方法
mate-indicators
mate-indicators是指在麒麟操作系统中使用的一种指示器应用程序。它提供了一些常用的系统指示器,例如电池电量、音量、网络连接等,以便用户可以方便地查看和控制这些系统状态。
auditd
auditd是Linux系统中的一个工具,用于监控系统的安全审计日志。它可以记录系统中发生的各种事件,如文件访问、用户登录、进程创建等,并将这些事件记录到日志文件中,以供后续分析和审计。
临时解决:
systemctl restart lightdm.service
systemctl stop auditd.service
升级插件包彻底解决
麒麟系统离线下载地址:
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!