Linux服务器瞬时负载居高问题小记

有史以来负载突然居高的,有点吓人。

如图示:

image.png

使用vmstat命令查看:

PS: vmstat(Virtual Memory Statistics 虚拟内存统计) 命令用来显示Linux系统虚拟内存状态,也可以报告关于进程、内存、I/O等系统整体运行状态

image.png

发现奇葩的的--r值:这个高!!!
PS:
r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)

正常的情况下的r值是:

image.png
说明的问题:

可能有异常的情况很多的进程一直在创建

image.png
查看一些可能的进程:

因为公司的业务又使用的一些定时的任务,定时执行一些服务。所有核查一下一些进程信息:

ps -ef |grep python
image.png

果然是这一推的进程在作祟!!!!!
直接结束上述的相关进程后,就好了!!

批量删除对应的进程:

批量删除示例:

[root@web-1 online]# ps -ef | grep remind_service | grep -v color | cut -c 9-15
 14900 
[root@web-1 online]# ps -ef | grep remind_service | grep -v color | cut -c 9-15
 14900 
[root@web-1 online]# ps -ef | grep remind_service 
root     14900  1076  0 08:00 ?        00:00:05 python /data/service/online/remind_service/main.py
root     30707 22682  0 11:33 pts/0    00:00:00 grep --color=auto remind_service
[root@web-1 online]# 

image.png

说明:

“grep xxxx”的输出结果是,所有含有关键字“remind_service”的进程。

“grep -v xxxxx”是在列出的进程中去除含有关键字“color”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。


$ps -ef | grep read_sight_service_syn_vedio | grep -v color | cut -c 9-15 | xargs kill -s 9

或者----------------------

$ pgrep read_sight_service_syn_vedio | xargs kill -s 9

排查了下,不知道为啥定时执行的任务不断执行创建了!这个目前暂时还不是很清楚!

常用的排查方法

===============================
2018-12-17 09:31:49
===============================
常用的排查方法:来源:https://yq.aliyun.com/articles/129599?spm=a2c4e.11155435.0.0.3a0b7379DbjA8P

批量删除进程

$ps -ef | grep read_sight_service_syn_vedio | grep -v color | cut -c 9-15 | xargs kill -s 9

统计TCP连接数

[root@web-1 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ESTABLISHED 92
TIME_WAIT 5560

列出消耗高的线程:

LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | grep -v CPU | sort -n -r | head -20

统计线程消耗的总的CPU:

{ LANG=C ps -eT -o%cpu,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v CPU | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l

列出内存消耗高的进程:

LANG=C ps -e -o%mem,pid,tid,ppid,comm | grep -v MEM | sort -n -r | head -20

统计内存消耗情况:

{ LANG=C ps -e -o%mem,pid,tid,ppid,comm | sed -e 's/^ *//' | tr -s ' ' | grep -v MEM | sort -n -r | cut -d ' ' -f 1 | xargs -I{} echo -n "{} + " && echo ' 0'; } | bc -l

列出导致CPU负载高的线程:

LANG=C ps -eTo stat,pid,tid,ppid,comm,args | perl -ne 'chomp;if (m!^\s*(\S*[RD]+\S*.*)!) {print qq[$1\n];}'

dstat 负载情况查看:

[root@web-1 ~]# dstat -l
---load-avg---
 1m   5m  15m 
1.43 1.23 1.24
1.31 1.21 1.23
1.31 1.21 1.23

找出占用资源最高的进程和用户

[root@web-1 ~]dstat --top-mem --top-io --top-cpu
--most-expensive- ----most-expensive---- -most-expen
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,240评论 2 33
  • 系统管理与维护命令 date date(选项)(参数) | 选项 | 说明 | | :-------- | ...
    蓓蓓的万能男友阅读 4,033评论 0 5
  • 如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个专业的 Linu...
    七寸知架构阅读 10,968评论 1 71
  • Linux进程管理原理 Linux的进程管理,就是对硬件各资源进行分配、调度、销毁等工作,其主要部件的管理为:CP...
    魏镇坪阅读 1,319评论 0 6
  • 姓名:李格 公司:海南蔚蓝时代实业有限公司 组别:第420期乐观4组 【日精进打卡第62天】 【知~学习】 背诵《...
    熊猫酱panda阅读 198评论 0 0