网站被攻击后CPU持续100%如何排查?
- 来源:纵横数据
- 作者:中横科技
- 时间:2026/9/11 10:59:22
- 类别:新闻资讯
在网站运营过程中,服务器CPU持续100%是一种非常严重的异常情况。很多站长发现网站访问变慢、后台无法打开、接口频繁超时,第一时间会认为是服务器配置不足。但实际上,当网站遭受攻击后,CPU长期满载的情况非常普遍。
网站被攻击后导致CPU100%,原因并不一定只是流量过大,也可能是恶意请求大量消耗PHP、数据库、Nginx进程资源,甚至可能是攻击者利用漏洞植入恶意程序,使服务器长期执行异常任务。因此,面对CPU持续满载问题,不能简单重启服务器,而应该按照流程进行排查,找到真正导致资源消耗的原因。服务器CPU异常占用通常需要结合进程、日志、网络连接等多个方面综合判断。
一、首先判断CPU100%是否由攻击引起
服务器CPU突然升高,常见原因包括:
CC攻击;
恶意爬虫访问;
DDoS攻击后的应用压力;
网站漏洞被利用;
木马程序运行;
程序代码异常;
数据库查询压力过高。
其中,攻击导致的CPU满载通常具有明显特点。
例如:
CPU长期保持90%以上;
网站访问速度明显下降;
Nginx或Apache进程数量大量增加;
PHP-FPM进程持续占满;
数据库连接数量异常;
访问日志出现大量重复请求。
正常用户访问网站时,请求量通常具有规律,例如白天访问高、晚上访问低。而攻击流量往往表现为短时间大量重复访问,访问路径高度集中。
例如,某企业官网部署在云服务器上,平时CPU使用率约20%左右。某天凌晨开始,服务器CPU持续100%,网站首页打开非常缓慢。管理员检查服务器资源后发现,内存和磁盘没有异常,但Nginx访问日志中出现大量来自不同IP的重复请求,主要集中访问网站搜索接口。
进一步分析发现,这些请求并非真实用户访问,而是攻击者利用自动化工具不断发送请求,导致PHP程序重复执行,最终拖垮CPU。
这种情况属于典型的CC攻击导致应用层资源耗尽。
二、通过服务器进程定位CPU消耗来源
确认服务器异常后,第一步需要找到是谁占用了CPU。
Linux服务器可以通过以下方式查看:
top
或者:
htop
查看当前CPU占用最高的进程。
重点关注:
nginx;
php-fpm;
mysqld;
java;
异常陌生进程。
如果发现PHP-FPM大量占用CPU,说明可能存在大量动态请求。
如果MySQL占用CPU较高,需要检查数据库查询。
如果出现陌生进程持续占用CPU,则需要考虑服务器被植入木马或挖矿程序。
例如:
某服务器遭遇攻击后,管理员发现CPU一直100%,通过top查看发现:
php-fpm占用80%;
nginx占用10%;
mysql占用5%。
进一步检查发现大量PHP请求来自同一个攻击路径,说明问题并不是服务器性能不足,而是恶意请求触发大量PHP计算。
而另一种情况是:
某服务器CPU100%,但是nginx和php-fpm占用很低,反而出现一个陌生程序长期占用大量CPU,这种情况则需要重点排查服务器安全问题。
因此,CPU100%排查的核心原则是:
先找到消耗资源的进程,再判断进程为什么异常。
三、分析网站日志,确认攻击入口
找到Web服务异常后,需要进一步查看网站访问日志。
Nginx日志通常位于:
/www/wwwlogs/
或者:
/var/log/nginx/
重点分析:
访问频率;
请求路径;
来源IP;
User-Agent;
返回状态码。
如果发现大量类似请求:
/login.php /search.php /api/ ?id=随机参数 /admin/
并且访问频率非常高,就需要重点关注。
例如,一个电商网站遭遇攻击后,服务器CPU持续满载。
查看日志发现:
大量IP持续访问商品搜索接口;
每个请求都会查询数据库;
短时间产生数万次查询。
最终导致:
PHP-FPM进程占满;
MySQL连接增加;
CPU持续100%。
解决方式不是简单增加PHP进程,而是限制异常访问,并优化接口逻辑。
通过限制搜索接口频率,同时增加缓存机制后,服务器CPU恢复正常。
四、针对CC攻击进行限制和防护
如果确认是CC攻击导致CPU满载,需要优先降低无效请求数量。
第一,可以通过Nginx限制访问频率。
例如限制单个IP单位时间请求数量:
limit_req_zone
通过请求频率控制,让异常访问无法持续消耗服务器资源。
第二,限制敏感接口访问。
例如:
登录页面;
搜索接口;
注册接口;
订单接口。
这些页面通常需要执行程序逻辑,比普通静态页面消耗更多CPU。
可以增加:
访问频率限制;
验证码验证;
登录失败限制;
IP访问控制。
第三,屏蔽明显异常请求。
例如:
大量404扫描;
异常User-Agent;
恶意爬虫;
攻击IP。
通过防火墙规则或者Web应用防火墙进行拦截,可以减少攻击请求进入服务器。针对网站攻击导致CPU满载的情况,WAF策略、CC防护以及IP黑名单通常是常见处理方式。
五、检查服务器是否存在后门或恶意程序
网站被攻击后,除了CPU被请求打满,还需要考虑服务器是否已经被入侵。
攻击者可能通过漏洞上传:
木马文件;
恶意脚本;
挖矿程序;
定时任务。
常见检查方向:
查看异常进程;
检查计划任务:
crontab -l
检查网站目录:
find /www -mtime -2
查看最近修改文件。
例如:
某服务器遭受攻击后,管理员发现即使停止网站访问,CPU仍然保持100%。
进一步排查发现,服务器中存在一个隐藏程序,并且通过定时任务自动启动。
删除异常程序并修复漏洞后,CPU才恢复正常。
这说明,网站攻击后的CPU异常,并不一定都是流量问题,也可能是服务器已经被控制。
六、优化程序和数据库,降低攻击带来的影响
即使做好攻击防护,如果网站程序本身性能较差,也容易在攻击过程中出现CPU满载。
因此,需要同步优化业务程序。
主要方向包括:
优化SQL查询;
增加数据库索引;
减少重复计算;
增加页面缓存;
优化PHP代码执行效率。
例如:
一个资讯网站受到CC攻击时,大量访问文章搜索功能。
由于搜索没有缓存,并且数据库没有索引,每一次请求都会扫描大量数据。
即使攻击请求数量不是特别大,也会快速消耗CPU。
优化数据库索引,并增加搜索缓存后,单次请求消耗降低,服务器抗攻击能力明显提升。
七、建立长期监控机制避免重复故障
网站攻击后的恢复并不代表问题结束。
很多网站第一次被攻击后,通过封禁IP或者重启服务器暂时恢复,但由于没有完善防护,之后仍然可能再次出现CPU100%。
建议建立长期监控:
CPU使用率监控;
网络流量监控;
异常请求报警;
PHP-FPM状态监控;
数据库慢查询监控。
当CPU出现异常趋势时,可以提前发现问题,而不是等网站完全打不开后再处理。
总结
网站被攻击后CPU持续100%,排查重点不是盲目升级服务器配置,而是找到真正消耗资源的原因。
处理过程应该按照:
检查CPU占用进程;
分析网站访问日志;
判断攻击类型;
限制异常请求;
检查服务器安全;
优化程序性能;
建立长期监控。
如果是CC攻击,需要重点防御恶意请求;如果是漏洞入侵,则需要清理异常程序并修复安全漏洞;如果是程序性能问题,则需要优化代码和数据库。
只有建立完善的服务器安全体系,才能减少攻击对网站业务的影响,让服务器在复杂网络环境下保持稳定运行。
纵横云服务器租赁,欢迎随时联系,客服联系方式:QQ3494196421,手机微信19906048601。




使用微信扫一扫
扫一扫关注官方微信 

