事情经过
昨天早上,打开电脑发现自己的博客网站打开不了,准备远程登录服务器查看问题,发现服务器远程不上。没办法,登录阿里云后台,重启服务器。重启完成后,网站能正常打开,所以当时就不以为然,以为阿里云那边是不是出了什么毛病。
到了下午的时候,发现网站又打不开了,而且又远程连接不了服务器。进入阿里云控制台,查看监控发现cpu跑满了。只能再重启服务器,等重启完成后再远程连接上去,这次需要好好排查问题。
解决问题
当时首先想到的是中病毒了,先不管那么多,第一步是找到那些耗cpu的进程杀死。使用top命令,查看耗cpu的进程有哪些。一看就明白了,都是bzip2搞得鬼。
杀进程的过程发现一个问题,就是这些进程杀死了,过一会又出现了。这种现象,我知道肯定要找到他们的父进程,擒贼先擒王。
# 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
但是发现他们的ppid不是同一个,这就让我很疑惑了。我打算用进程树看看
pstree -up
这时候,我就知道了,原来是自己的定时脚本有问题。那么我需要做以下几件事:
关闭crond服务
crontab -e 将weekly.sh去掉
杀掉那些耗cpu的进程
# 关闭 [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进程,下面的命令执行了好几遍,才将所有耗cpu进程全部杀掉了 ps -lA | grep bzip2 | awk '{print $4}' | xargs -n 10 kill -9
问题原因与思考
刚开始,我以为是自己的shell脚本有问题,出现死循环导致问题出现。但是查看脚本,发现没有问题,没有死循环的情况出现。一时间,百思不得姐。
#!/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 {} \;
过了很长时间,终于找到了原因所在,原来是自己的定时任务写法有问题
* 3 * * 1 /root/bin/weekly.sh 1>/dev/null 2>&1
我原本的想法是每周1凌晨3点执行一次备份脚本,但是这样写的结果是每周一凌晨3点的每分钟都会执行该脚本一次。正确的写法应该如下:
# 每周一凌晨三点零一分执行该脚本 1 3 * * 1 /root/bin/weekly.sh 1>/dev/null 2>&1
问题解决了,原因也找到了。自己该写一个服务器资源监控脚本了。
The above is the detailed content of Record a server CPU full event. For more information, please follow other related articles on the PHP Chinese website!

核心数指的是CPU内核数量,表示一个CPU由多少个核心组成;cpu核心是CPU的重要组成部件,在内核频率、缓存大小等条件相同的情况下,CPU核心数量越多,CPU的整体性能越强。线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。CPU之所以要增加线程数,是源于多任务处理的需要;线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

区别:1、单核就是CPU集成了一个运算核心,多核就是CPU集成了两个或多个运算核心;2、单核能同时运行的线程数较多核更少,不利于同时运行多个程序,而多核有利于同时运行多个程序;3、单核的执行速度较多核更慢,容易造成卡顿;4、多核的多任务处理效率比单核高;5、多核的性能比单核高,散热量、耗电量也比单核大;6、单核多用于部分要求轻薄、待机时间长、而对性能要求不高的笔记本电脑上。

cpu温度高的原因:1、散热不良;2、机器内灰尘过多也会引起死机故障;3、内存条故障;4、CPU超频;5、 硬盘故障;6、软硬件不兼容;7、驱动程序安装有误;8、应用软件的缺陷;9、病毒感染;10、启动的程序太多;11、用非法格式或参数非法打开或释放有关程序;12、误删除了系统文件;13、CMOS设置不当。

12核16线程指的是CPU中有12个内核,CPU的线程是16个,最多可以模拟16个核心;CPU的核心是运算器和控制器,多核可以增强并行处理能力,线程是进程中某个单一顺序的控制流,在单个程序中同时运行多个线程完成不同的工作,称为多线程。

cpu长期100度是会烧的;cpu的温度达到100度,短时间不会烧坏,只是会影响到CPU的运算效率,但是长时间保持100度就会出现烧坏硬件的情况;发热量由CPU的功率决定,而功率又和电压成正比,因此要控制好温度就要控制好CPU的核心电压。

能直接存取。内存储器又称内存,是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行。内存的作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机运行,操作系统就会把需要运算的数据从内存调到CPU中进行运算;当运算完成后,CPU再将结果传送出来,内存的运行也决定了计算机的稳定运行。

cpu温度过高导致的影响:1、CPU有自我保护功能,CPU过高会自动开启保护系统,降低电脑运行速率,系统越来越慢,直至死机,反复重启;2、长时间高温(长时间85度以上),CPU的自我保护功能可能失效,会烧坏CPU;3、自动关机,且关机之后,温度未降低之前无法开机。

cpu封装温度指的是表面CPU温度,就是说从表面CPU层的温度,一般还有内核温度,相差的度数不大;中央处理器温度是指CPU外壳温度,核心温度就是CPU内核的温度;一般核心温度和封装温度是接近的,cpu表面温度比后面者低不少。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Safe Exam Browser
Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version
SublimeText3 Linux latest version

SublimeText3 Chinese version
Chinese version, very easy to use

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Mac version
God-level code editing software (SublimeText3)
