站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        記一次服務(wù)器CPU跑滿事件

        事情經(jīng)過

        昨天早上,打開電腦發(fā)現(xiàn)自己的博客網(wǎng)站打開不了,準備遠程登錄服務(wù)器查看問題,發(fā)現(xiàn)服務(wù)器遠程不上。沒辦法,登錄阿里云后臺,重啟服務(wù)器。重啟完成后,網(wǎng)站能正常打開,所以當時就不以為然,以為阿里云那邊是不是出了什么毛病。

        到了下午的時候,發(fā)現(xiàn)網(wǎng)站又打不開了,而且又遠程連接不了服務(wù)器。進入阿里云控制臺,查看監(jiān)控發(fā)現(xiàn)cpu跑滿了。只能再重啟服務(wù)器,等重啟完成后再遠程連接上去,這次需要好好排查問題。

        記一次服務(wù)器CPU跑滿事件

        解決問題

        當時首先想到的是中病毒了,先不管那么多,第一步是找到那些耗cpu的進程殺死。使用top命令,查看耗cpu的進程有哪些。一看就明白了,都是bzip2搞得鬼。

        記一次服務(wù)器CPU跑滿事件

        殺進程的過程發(fā)現(xiàn)一個問題,就是這些進程殺死了,過一會又出現(xiàn)了。這種現(xiàn)象,我知道肯定要找到他們的父進程,擒賊先擒王。

        # ps -lA | grep bzip2 0 R     0  1965  1964 44  80   0 -  3435 -      ?        00:01:43 bzip2 0 S     0  1981  1980 33  80   0 -  3435 pipe_w ?        00:00:56 bzip2 0 R     0  1997  1996 30  80   0 -  3435 -      ?        00:00:31 bzip2 0 R     0  2013  2012 27  80   0 -  3435 -      ?        00:00:07 bzip2 0 R     0  2024  2023 15  80   0 -  3435 -      ?        00:00:00 bzip2

        但是發(fā)現(xiàn)他們的ppid不是同一個,這就讓我很疑惑了。我打算用進程樹看看

        pstree -up

        記一次服務(wù)器CPU跑滿事件

        這時候,我就知道了,原來是自己的定時腳本有問題。那么我需要做以下幾件事:

        1. 關(guān)閉crond服務(wù)

        2. crontab -e 將weekly.sh去掉

        3. 殺掉那些耗cpu的進程

        # 關(guān)閉 [root@iz8vb626ci0aehwsivxaydz ~]# kill 1622 [root@iz8vb626ci0aehwsivxaydz ~]# systemctl status crond ● crond.service - Command Scheduler    Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)    Active: inactive (dead) since Tue 2019-11-12 10:44:32 CST; 10s ago  Main PID: 1622 (code=exited, status=0/SUCCESS)   # 修改crontab -e   # 殺掉耗cpu進程,下面的命令執(zhí)行了好幾遍,才將所有耗cpu進程全部殺掉了 ps -lA | grep bzip2 | awk '{print $4}' | xargs -n 10 kill -9

        問題原因與思考

        剛開始,我以為是自己的shell腳本有問題,出現(xiàn)死循環(huán)導(dǎo)致問題出現(xiàn)。但是查看腳本,發(fā)現(xiàn)沒有問題,沒有死循環(huán)的情況出現(xiàn)。一時間,百思不得姐。

        #!/bin/bash # 每周備份腳本   export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin export   backdir=/backup/weekly # 備份目錄   [ -z "$backdir" ] || mkdir -p $backdir   dirs=(/etc /home /root /usr /var/spool/cron /var/spool/at)  # 需要備份的目錄   for dir in ${dirs[@]} do     if [ ! -d $dir ];then         continue     fi       cd $backdir     tar -jcpf $(basename $dir)_$(date +%Y%m%d).tar.bz2 $dir done     # 刪除mtime大于30天的文件 find $backdir -mtime +30 -name *.tar.bz2 -exec rm -f {} ;

        過了很長時間,終于找到了原因所在,原來是自己的定時任務(wù)寫法有問題

        * 3 * * 1  /root/bin/weekly.sh 1>/dev/null 2>&1

        我原本的想法是每周1凌晨3點執(zhí)行一次備份腳本,但是這樣寫的結(jié)果是每周一凌晨3點的每分鐘都會執(zhí)行該腳本一次。正確的寫法應(yīng)該如下:

        # 每周一凌晨三點零一分執(zhí)行該腳本 1 3 * * 1  /root/bin/weekly.sh 1>/dev/null 2>&1

        問題解決了,原因也找到了。自己該寫一個服務(wù)器資源監(jiān)控腳本了。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
        主站蜘蛛池模板: 99视频在线精品国自产拍亚瑟| 久久国产精品二国产精品| 精品人妻一区二区三区毛片 | 国产精品久久久久天天影视| 亚洲精品国产V片在线观看| 国产精品亚洲高清一区二区| 欧美大片日韩精品| 国产成人精品福利网站在线| 精品国产粉嫩内射白浆内射双马尾| 久久久久九九精品影院| 国产精品爱搞视频网站 | 久久免费精品视频| 99re66热这里只有精品| 日韩精品无码一区二区三区不卡| 无码精品一区二区三区免费视频| 国精品无码一区二区三区在线 | 国产福利精品在线观看| 四虎永久在线精品国产免费| 国产亚洲婷婷香蕉久久精品| 国产91精品一区二区麻豆网站| 国产亚洲精品资源在线26u| 无码日韩人妻精品久久蜜桃| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 国产精品嫩草视频永久网址| 成人国内精品久久久久一区| 国产女人精品视频国产灰线| 国产午夜精品免费一区二区三区| 国产精品视频白浆免费视频| 国产精品va无码一区二区| 97热久久免费频精品99| 国产精品久久波多野结衣| 国产一精品一av一免费爽爽| 国产精品久久久久久搜索| 精品一卡2卡三卡4卡免费视频| 久热这里只精品99re8久| 国产精品V亚洲精品V日韩精品 | 国产精品成人A区在线观看| 99精品一区二区三区无码吞精 | 欧美精品黑人粗大免费| 国产欧美日韩精品丝袜高跟鞋| 92国产精品午夜福利|