在实际工作环境中,一些linux服务器会部署大量服务,有些服务是部署在服务器本身,有些服务是部署在docker容器中linux查看cpu占用,当某个进程因为某些原因开始占用大量内存或CPU时,通过top命令查看占用内存、CPU过高的进程,在用ps -ef|grep 进程号,查看具体哪个进程时,无法识别这个进程是宿主机运行的,还是daocker'容器运行的。
今天给大家介绍一种可以排查进程是容器运行,还是宿主机运行的方法。
一、 查看占用内存或CPU较高的进程
我们除了top命令以外,还可以用以下命令查看占用cpu和内存前十的进程
ps aux|head -1;ps aux|sort -rn -k +3|head #查看占用CPU前十的进程
ps aux|head -1;ps aux|sort -rn -k +4|head #查看占用内存前十的进程
head 默认获取10行,可以在后面加-n 控制显示数量,如获取三行
ps aux|head -1;ps aux|sort -rn -k +3|head -3
我们先用top命令查看一下,发现第一个是java进程,占用内存较高,我们需要对它做一些限制。
二、通过进程号查看进程运行在哪个容器
通过ps加参数的命令来获取linux查看cpu占用,
ps -e -o pid,cmd,comm,cgroup | grep 21905 #查看进程在哪个容器内运行
ps:21905是我们查出来一个占用内存较高进程的pid
通过这条命令可以发现这个进程是运行在9ea1fc99d7fb这个容器里的。在用docker ps|grep 容器id查看容器的具体信息。
docker ps|grep 9ea1fc99d7fb #可以查看这个容器的具体信息
知道了进程运行在哪个容器,就简单多了,通过docker命令进入到容器中,对进程做一些限制就可以了。
docker exec -it 9ea1fc99d7fb /bin/bash #进入到容器
———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: wxii2p22
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。