美文网首页
Linux服务器瞬时负载居高问题小记

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

作者: 小钟钟同学 | 来源:发表于2018-12-04 11:36 被阅读9次

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

    如图示:

    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服务器瞬时负载居高问题小记

          本文链接:https://www.haomeiwen.com/subject/zgxmcqtx.html