当前位置: 首页 > news >正文

虚拟主机CPU占用100导致打不开的一次处理

背景

突然有一天,有个客户网站打不开了,发来这样一张图片

在这里插入图片描述

问题排查

打开阿里云虚拟主机控制面板,CPU 使用率已经达到了100%,这说明网站已经在高负荷运转。

在这里插入图片描述

分析访问日志发现,网站出现了大量循环路径,其 UserAgent 为某个搜索引擎, 类似这样的访问路径:

/index.php/news/product/fuwu/fuwu/fuwu/product/about/product/about/fuwu/about/fuwu/news/product/product/product/product/news/product/product/about/product/product/news/product/news/product/news/news/public/web/js/basic.js?1699501429

这应该可以判断,因为页面中错误的路径输出,导致搜索引擎在爬取时,出现了死循环遍历,最终导致网站 CPU 占满,最终也就导致了 PHP 连接 MySQL 的连接数超限,最终导致网站打不开。

在这里插入图片描述

解决方案

确认了问题原因,笔者想到两个解决方案,第一当然是需要排查代码,找到输出内链的地方,一律改用绝对路径, 如 /news/product, 避免出现相对路径,否则则可能出来循环嵌套错误, 如 news/product

假设这个内链出现在首页,则链接正确,但是如果出现在子页,则很容易出现路径循环嵌套,假设某个子页面为 news/detail, 那么使用的相对路径后,这个页面中的内链在搜索引擎看来,就成了 news/detail/news/product, 显然,这不对。

另外一个临时解决方案是,修改配置文件,禁用搜索引擎访问层级过多的页面,一旦访问,服务器返回 404

修改 .htaccess 文件,添加如下内容:

# 防止路径嵌套过深,如 /search/news/about/news/...(超过4段路径则判定非法)
RewriteCond %{REQUEST_URI} ^/(.+/){4,} [NC]
RewriteRule .* - [R=404,L]

同时,因为网站已经配置了伪静态,所以应该禁止访问 index.php/* 这样的文件

# 禁止通过 index.php/xxx 的路径访问(返回 404)
RewriteCond %{THE_REQUEST} \s/+index\.php/ [NC]
RewriteRule ^index\.php/ - [R=404,L]

修改完 .htaccess 文件后,重启虚拟主机。

最终,一切回顾了平静:

在这里插入图片描述


文章转载自:
http://catty.zzyjnl.cn
http://asclepiadic.zzyjnl.cn
http://apocarp.zzyjnl.cn
http://barogram.zzyjnl.cn
http://barotolerance.zzyjnl.cn
http://choplogic.zzyjnl.cn
http://cardiotomy.zzyjnl.cn
http://ascus.zzyjnl.cn
http://atropos.zzyjnl.cn
http://bactericidal.zzyjnl.cn
http://aleutian.zzyjnl.cn
http://carpsucker.zzyjnl.cn
http://chinee.zzyjnl.cn
http://briar.zzyjnl.cn
http://batumi.zzyjnl.cn
http://amphiaster.zzyjnl.cn
http://bvi.zzyjnl.cn
http://calathus.zzyjnl.cn
http://beaming.zzyjnl.cn
http://banksman.zzyjnl.cn
http://christen.zzyjnl.cn
http://barque.zzyjnl.cn
http://attestant.zzyjnl.cn
http://botryoidal.zzyjnl.cn
http://anhydro.zzyjnl.cn
http://aviatic.zzyjnl.cn
http://atropin.zzyjnl.cn
http://calando.zzyjnl.cn
http://attrite.zzyjnl.cn
http://apospory.zzyjnl.cn
http://www.dtcms.com/a/280601.html

相关文章:

  • 网络基础协议综合实验
  • GNU Radio连接X310运行报错
  • 【赵渝强老师】大数据交换引擎Sqoop
  • 实测两款效率工具:驾考刷题和证件照处理的免费方案
  • 【历史人物】【李白】生平事迹
  • deepseekAI对接大模型的网页PHP源码带管理后台(可实现上传分析文件)
  • 非对称加密:RSA
  • 一维泊松方程的有限元方法实现与理论分析
  • Student后台管理系统查询接口
  • 无人机GPS定位系统核心技术解析
  • Java :List,LinkedList,ArrayList
  • ov5640,ov2640,ov7670摄像头比较
  • OSPF过滤
  • 在百亿流量面前,让“不存在”无处遁形——Redis 缓存穿透的极限攻防实录
  • uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)
  • 解锁Python爬虫:数据获取与清洗的进阶指南
  • 运维技术教程之Jenkins的秘钥设置
  • TP商城登录系统测试报告
  • Python Fabric库详解:从入门到自动化运维实战
  • C++ Boost Aiso TCP 网络聊天(服务端客户端一体化)
  • 【论文阅读 | PR 2024 |ITFuse:一种用于红外与可见光图像融合的交互式 Transformer】
  • 第三章 OB SQL 引擎高级技术
  • 【网络安全】大型语言模型(LLMs)及其应用的红队演练指南
  • 【Git】详解git commit --amend用法以及使用遇到的问题
  • Vue 2 和 Vue 3 中,组件的封装、二次开发和优化
  • Sersync和Rsync部署
  • Keil 5下载的时候提示“No J-Link found”
  • 《恋与深空》中龙和蛇分别是谁的代表
  • 25、企业能源管理(Energy):锚定双碳目标,从分类管控到智能优化的数字化转型之路
  • flutter弹窗:fluttertoast