当前位置:网站首页 >  教程

运维崩溃应急处理全流程:从定位到恢复的可直接上手操作指南

时间:2026年06月11日 21:44:16 来源:易频IT社区

一、应急前置准备(提前5分钟完成,省崩溃时的排查时间)

仅需安装3个轻量必备工具,直接复制对应命令执行:

  • CentOS 系列:yum install htop dstat lsof -y
  • Debian/Ubuntu 系列:apt install htop dstat lsof -y

核心规则:遇到崩溃先救服务,再找根因,绝对不要上来就重启整台服务器

二、三类90%运维崩溃的实操处理步骤

2.1 进程CPU占用100%导致的服务崩溃

步骤1:登录服务器,ssh 用户名@服务器IP(默认端口22,改端口加-p,如ssh root@123.45.67.89)

步骤2:用htop查看CPU占比,按P键按CPU降序排序,找到占比≥90%的进程,记录左侧PID数值

步骤3:先优雅停止服务:kill -TERM [PID],等待10秒;若进程未退出,再强制终止:kill -9 [PID],随后重启对应服务(以Nginx为例:systemctl restart nginx;以PHP-FPM为例:systemctl restart php-fpm)

步骤4:定位根因:用top -p [PID] -H 查看进程内线程的CPU占用,找到峰值线程;再查看对应服务的实时日志,如Nginx错误日志路径:/var/log/nginx/error.log,执行tail -50f /var/log/nginx/error.log,找到导致崩溃的具体请求(如无索引的SQL查询),示例修复:给表加索引,SQL语句:ALTER TABLE order ADD INDEX idx_user_id(user_id);

2.2 磁盘使用率100%导致的服务崩溃

步骤1:先排查根分区使用率,执行df -h /

步骤2:若某分区100%,如/var分区,执行du -h --max-depth=1 /var 找到最大目录(多为/var/log)

步骤3:绝对不要用rm删除正在被进程占用的日志,用清空命令直接释放空间:如清空Nginx访问日志:> /var/log/nginx/access.log;删除core文件:rm -rf /var/core/

步骤4:恢复服务:执行systemctl restart httpd(或对应服务名),再用df -h确认使用率降至90%以下(安全线)

2.3 核心服务(以MySQL为例)挂死导致的崩溃

运维崩溃应急处理全流程:从定位到恢复的可直接上手操作指南

步骤1:检查服务状态:systemctl status mysqld,若显示dead,尝试启动:systemctl start mysqld

步骤2:启动失败查看错误日志,执行tail -100 /var/log/mysqld.log,常见问题及修复:

  • 问题1:找不到ibdata1文件,执行find / -name ibdata1找到路径,修改配置文件/etc/my.cnf,添加datadir=对应路径(如datadir=/var/lib/mysql),再重启服务
  • 问题2:端口3306被占用,执行lsof -i :3306找到占进程的PID,kill -9 [PID]后再启动MySQL

步骤3:若启动后仍崩溃,修复损坏的InnoDB表,执行:mysqlcheck -u root -p --all-databases,输入MySQL密码,遇到确认项输入y即可

三、崩溃后10分钟快速加固(防止复现)

3.1 日志自动切割(避免日志占满磁盘)

直接复制配置放入对应路径,以Nginx为例,新建文件/etc/logrotate.d/nginx,写入完整配置:

``` /var/log/nginx/.log { daily missingok rotate 7 compress notifempty create 0640 nginx adm sharedscripts postrotate [ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid` endscript } ```

执行命令生效:logrotate /etc/logrotate.d/nginx

3.2 分钟级CPU监控(提前预警崩溃)

执行crontab -e,添加以下行,每5分钟检查CPU峰值并写入日志:

/5 /usr/bin/htop -d 1 -b | grep 'CPU\s[1-9][0-9]\.[0-9]' >> /var/log/cpu_monitor.log

3.3 磁盘使用率预警

执行crontab -e,添加以下行,每日凌晨2点检测磁盘使用率超过80%的目录并邮件告警(需配置sendmail):

0 2 /usr/bin/du -h /var | awk '{if($1~/[8-9][0-9]%/ || $1~/100%/) print $2}' | mailx -s "磁盘告警" admin@yourdomain.com

所有步骤均为可直接复制执行的实操指令,无额外冗余内容,遇到崩溃可按顺序直接操作,无需额外研究其他内容。

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图