首页 > 系统相关 >服务器内存占用高,如何排查是哪个项目占用的资源?

服务器内存占用高,如何排查是哪个项目占用的资源?

时间:2023-03-21 11:45:26浏览次数:56  
标签:查看 项目 占用 内存 进程 服务器

服务器内存占用高,如何排查是哪个项目占用的资源?

最直观的查看方式

ps -e -o pid,user,%mem,command --sort=-%mem | head

A1

要查看服务器上的哪个项目占用资源,可以执行以下步骤:

使用 top 命令查看哪些进程占用了服务器的内存。打开终端,输入 top 命令,按下 Enter 键,观察前几行的进程占用情况。

根据 top 命令所得到的进程信息,找出哪个进程占用了较多的内存和 CPU 资源,通常可以在右边的 MEM% 和 CPU% 列看到排序。

确认进程所属的项目,在终端输入ps aux | grep进程名 命令查看该进程所属的项目名。

如果确定了进程所属的项目名,可以进入项目的目录下,查看对应的配置文件,确认是否有误操作导致了资源占用过高。

如果无法确定进程所属的项目名,可以使用 lsof 命令查看到进程当前打开的文件,确定该进程所在的目录,从而锁定项目名。

注意:在定位问题时,还需考虑是否有恶意攻击程序正在运行,打开了隐藏的服务,导致服务器内存占用过高。如果确定存在安全问题,需要针对性地加强安全防护。

A2

使用系统自带的top或htop命令查看当前进程占用资源情况,并根据内存占用率列出进程列表。

在进程列表中找到对应的占用内存较高的进程,并查看其PID。

在命令行中输入命令:ps aux | grep PID,其中PID是前一步中找到的占用内存较高进程的PID。

在结果中查看该进程的启动命令行,一般为即可查看启动该进程的命令等信息,从中判断出是哪个项目的进程占用了过多的内存。根据结果进一步分析问题,可以是优化该项目的代码或者调整该项目的配置。

A3:

1.使用系统内置的工具(top、htop等)查看系统资源使用情况,并根据CPU和内存占用率列出进程列表;这将使您确定哪些进程正在使用大量的内存,并帮助您了解这些进程的最重要的特征。

2.使用更高级的工具,例如ps命令,使用如下方式来列出所有进程,并按排序方式列出使用的内存大小: ps aux --sort=-%mem | head -n 11 这将列出使用内存最大的十个进程,并以降序排列内存使用情况。

3.通过安装各种监控工具来实现对服务器性能的监控,例如Nagios、Zabbix、Ganglia等,在系统中安装好这些工具,并配置相关的监测参数和监控规则,定期对系统系统健康和系统负载情况进行监控和预警。对不同项目的资源占用进行监控,从而快速判断是哪个项目在占用过多内存和其它硬件资源。

一旦确认了使用大量内存的进程或应用程序,就可以着手解决。常用措施包括:

1.重启占用内存过多的进程或应用;

2.调整应用程序的内存设置;

3.排查应用程序中的泄漏问题,并修复;

4.优化系统架构中的组件冗余问题等。



文章来源:[刘俊涛的博客](http://www.cnblogs.com/lovebing) 欢迎关注公众号、留言、评论,一起学习。

若有帮助到您,欢迎捐赠支持,您的支持是对我坚持最好的肯定(_)

标签:查看,项目,占用,内存,进程,服务器
From: https://www.cnblogs.com/lovebing/p/17239429.html

相关文章

  • jmeter-HTTP代理服务器-录制浏览器操作
     HTTP代理服务器,可以对浏览器手动操作的过程进行录制,然后修改各种参数后,可以进行反复运行测试 1、添加HTTP代理服务器  2、添加后的界面如下图  3、在浏......
  • 小记:踩搭到海光服务器的坑
    日前,采购了一台海光服务器然后怎么安装anolis8.4的及centos8.4之前的各种操作系统都会失败,要么是安装操作系统直接黑屏,要么是安装操作系统完成后直接黑屏。。。找厂家,技......
  • 操作系统——虚拟内存
    摘要虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储......
  • umijs服务器代理配置,多个代理
    同时代理api和资源://服务器代理proxy:{'/api':{target:'http://xxx',changeOrigin:true,pathRewrite:{'^/api/':'/api/',......
  • SQL Server 导出链接服务器用户名密码
    DACconnectivitytoMSSQLinstancesLocaladministratorprivileges(neededtoaccessregistrykey)SysadminprivilegestoMSSQLinstancesfunctionGet-MSSQLL......
  • 深入了解 JavaScript 内存泄漏
    作者:京东零售谢天在任何语言开发的过程中,对于内存的管理都非常重要,JavaScript也不例外。然而在前端浏览器中,用户一般不会在一个页面停留很久,即使有一点内存泄漏,重新加......
  • C++温故补缺(十二):动态内存
    C++动态内存同C,C++中也是有堆和栈的概念。栈是函数内部声明的所有变量都所占用空间,堆是程序中未使用的内存,在程序运行期间可用于动态分配。同样也有alloc()分配内存,新增......
  • 微服务(一):内存穿透和内存雪崩
    如何降低内存穿透风险?布隆过滤器(英語:BloomFilter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在......
  • 使用python来模拟端口被占用的测试场景
    一、测试场景拿到一个运维如软件,做安装部署测试。其中,测试过程中存在一种场景:由于环境清理不干净等原因,导致软件安装部署时,某个组件的端口号被占用,而导致部署失败的情况。......
  • Comet4J AJAX 服务器推送框架
    Comet4J(CometforJava)是一个纯粹基于AJAX(XMLHTTPRequest)的服务器推送框架,消息以JSON方式传递,具备长轮询、长连接、自动选择三种工作模式。功能特性推送消息广播。......