PHP网站首页打不开的原因讲起

本文介绍了一个网站首页出现504错误的问题排查过程。通过分析nginx日志和数据库连接情况,最终发现是搜狗蜘蛛大量爬行导致数据库压力过大。采取措施屏蔽搜狗蜘蛛并优化缓存策略后,问题得以解决。

最近有个网站首页打不开,偶尔报504错误,如图所示,这是nginx直接返回的。


今天下午16:00多又出现了,看了下阿里云数据库连接,其实在晚上2:00也出现了一次。这个图是后来问题已经解决了获取的,数据库连接的请求数已经降下来了。



现在似乎是数据库压力很大,由于我们的数据库服务器同时有好几个库在线上,并不确定是其他系统把数据库拖垮还是当前这个系统的原因。


使用语句查询数据库的会话数

SQLSERVER 查看当前连接数
Select * from sys.dm_exec_connections --此命令可以看到有多少人在连
Select * from sys.dm_exec_sessions --此命令可以看到有多少会话,一个连接可以有多个会话


从图中大致定位到还是之前报504的网站对数据库的请求数很多。


定位到具体应用就可以上对应的服务器去进一步去查

先看CPU是比较正常的



再查PHP-FPM的进程数


正常情况下php进程只有10个左右,一下子变成这么多肯定说明是外界有很大的请求数。


但是为了确定是不是php出现什么异常导致进程无法结束,所以结束所有进程,重启php-fpm.。

发现没过多久又出现很多的进程数,所以可以得出结论:这说明nginx报504的原因是外界的请求是持续的,导致数据库压力巨大请求不过来,所以nginx报504


然后查这个时候的nginx日志最近500条数据

#tail -n 500 /usr/local/nginx/logs/access.log >>500_20160218-1712.txt


从日志里看出主要是百度和搜狗的蜘蛛在爬行,百度是一直在爬行的,应该是比较稳定不会导致网站突然流量剧增,而且据说百度会控制访问的频率,保证不把网站爬挂。

看来后面的日志,发现这个时间段搜狗的蜘蛛爬行数量是非常多的,由于蜘蛛是用集群在爬,所以屏蔽IP是没用的,只能在nginx里屏蔽请求头。

server {
	listen       80;
	root        /www/;
	index  index.php;
	#禁止特定爬虫的抓取
	if ($http_user_agent ~* "Sogou web spider") {
	 return 403;
	}

然后重新结束php进程,启动php进程,发现整个进程是非常平稳的维持在10个


说明就是搜狗搞的事情,当务之急只能先这么着了,谁让搜狗没有多少用户群呢,后续的解决方案还是使用缓存,所以从这个事情得出一条非常重要的结论,尽量使用缓存,不要因为网站现在很稳定就不使用缓存,因为网站随时会遇到这种访问量突发的情况


屏蔽搜狗之前:

屏蔽搜狗之后:



下面是从nginx日志中分析出来的各种蜘蛛对网站的爬行数据排名靠前的几个,其实已经屏蔽了谷歌等很多用处不大的爬虫,但是还是有很多爬虫在爬:


看的出来搜狗一天怕了不少。


特定IP抓取网站数据,其实是和指针类似,但是这类抓取一般会不定时,所以需要监控php进程,及时屏蔽对方IP 

监控php-fpm进程数

#!/bin/sh 
echo `date '+%Y-%m-%d %H:%M:%S'` "php进程数>>>"`ps -ef | grep php-fpm | wc  -l` >> /usr/wwwyuanboweb/phpfpm.txt


如果要做进程不存在重启之类的事情

#!/bin/sh 
ps -ef | grep php-fpm | wc  -l
if [ $? -ne 0 ]
then
echo "start process....."
else
echo "runing....."
fi
#####


需要windows到linux转码

# yum install -y dos2unix
# dos2unix ./t.sh

 

或者

vi t.sh
:set fileformat=unix
:wq 

 

还需要给shell脚本权限

#chmod +x ./t.sh

#contab  -e

*/1 * * * * /bin/bash  /usr/wwwyuanboweb/t.sh

 

查指定时间段的nginx日志

# sed -n '/23\/Feb\/2016:13:45:00/,/23\/Feb\/2016:13:50:59/'p /usr/local/nginx/logs/access.log>>20160223-1345-1350.txt

屏蔽指定的IP

通过iptables屏蔽某些或者某个IP地址达到屏蔽效果
# iptables -I INPUT -s 192.168.38.174 -j DROP //屏蔽单个ip
# iptables -I INPUT -s 192.168.38.0/100 -j DROP //屏蔽某段ip


网站监控数据




<think> 嗯,用户这次的问题聚焦在PHP-FPM未运行时WordPress网站的表现情况。结合之前的对话历史,用户似乎是在搭建WordPress环境时遇到了问题,需要明确服务组件缺失时的故障现象。 注意到用户引用了四篇技术资料,其中[^3]直接提到PHP-FPM进程不足导致502错误,[^4]则涉及PHP-FPM+Nginx的部署流程。这些引用很有价值,但需要更聚焦在“服务停止”而非“配置不足”的场景。 用户可能实际遇到了WordPress网站突然报错的情况,想通过症状反推是否是PHP-FPM服务崩溃导致的。ta的提问方式很专业,直接锁定关键组件,说明有一定运维基础。 需要重点区分三层表现: 1)浏览器层面的错误代码(最直观) 2)服务端的日志特征(给懂技术的用户参考) 3)特定于WordPress的异常行为(比如后台无法登录) 特别要注意引用[^3]中提到的“php-fpm-84.service loaded failed failed”这个细节,这是systemd管理下服务崩溃的典型报错。用户如果看到这种日志,基本就能确诊PHP-FPM的问题。 考虑到用户环境,补充说明Nginx和Apache的不同表现很重要——引用[^2]提到FastCGI协议通信,在Nginx中会返回502,而Apache可能表现为文件下载。这点差异能帮助用户快速定位问题方向。 最后决定用分层方式组织答案:先给浏览器现象(用户最可能接触到的),再讲技术原理,最后提供诊断命令。这样无论是普通用户还是运维人员都能获取所需信息。 </think>当PHP-FPM未运行时,WordPress网站会出现以下典型表现: --- ### 一、核心故障现象 1. **浏览器显示 `502 Bad Gateway` 错误** Nginx/Apache 因无法通过FastCGI协议连接PHP-FPM处理PHP脚本,直接返回此错误[^2][^3]。 ```nginx # Nginx错误日志示例 connect() to unix:/run/php-fpm.sock failed (2: No such file or directory) ``` 2. **静态资源可访问,动态内容完全失效** - ✅ CSS/JS/图片等静态文件正常加载 - ❌ 所有PHP请求(包括首页/文章页)返回空白页或502错误 - ❌ WordPress后台登录页 `/wp-admin` 无法打开 3. **服务器日志明确报错** ```bash systemctl status php-fpm # 显示 inactive (dead) journalctl -u php-fpm # 出现 "Failed to start PHP FastCGI Process Manager" ``` --- ### 二、技术原理分析 | **组件状态** | **结果** | **根本原因** | |---------------------|-----------------------------------|----------------------------------| | Web服务器 (Nginx) 运行 | 可接收请求 | 网络层正常 | | PHP-FPM 停止 | FastCGI通道中断 | PHP解释器无响应 | | WordPress 核心文件存在 | 但无法被执行 | 缺少PHP处理器 | PHP-FPM作为PHP脚本的运行时管理器,其停止会导致: 1. Nginx将PHP请求转发到无效的FastCGI端口/套接字 2. 动态内容生成完全失败(WordPress所有页面均为PHP驱动)[^1][^4] --- ### 三、紧急诊断步骤 1. **检查PHP-FPM状态** ```bash systemctl is-active php-fpm # 返回 inactive 即未运行 ``` 2. **强制重启服务** ```bash systemctl restart php-fpm # 恢复服务 ``` 3. **验证进程存在** ```bash ps aux | grep [p]hp-fpm # 应显示工作进程 ``` --- ### 四、与其他故障的对比 | **故障类型** | 错误代码 | WordPress表现 | |----------------------|---------------|-----------------------------| | PHP-FPM停止 | 502 | 全站动态内容失效 | | 数据库停止 | 500/连接错误 | 部分页面框架可加载 | | Nginx停止 | 连接拒绝 | 全站无法访问 | > 关键区别:**静态文件能否加载**是判断PHP-FPM问题的核心指标[^3][^4]。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值