日志里偶尔出现蜘蛛请求返回 500,同一时刻用户访问正常,GSC 里的服务器错误条目慢慢累积到两百多条。

真正麻烦的地方在于,几个原因的现象几乎一样。蜘蛛并发较高,触发了数据库连接数上限。也可能是缓存未命中时走全量查询,超时导致 500。

不容易想到的是,WAF 对特定 UA 的规则误判并返回 500。

上来先按时间聚合 500 记录看是否集中

grep 'Googlebot' access.log | awk '$9==500 {print $4}' | cut -c14-16 | sort | uniq -c

压测复现并观察数据库连接

mysql -e 'show status like "Threads_connected";'

给蜘蛛请求加缓存兜底

fastcgi_cache_valid 200 10m;

同一份数据我导出了两份,一份留底,一份拿来试。

这类问题以前遇到过,但这次的触发条件和上次不一样。

改完先别撤,确认这几项。蜘蛛请求的 500 归零,GSC 服务器错误条目在下次抓取后回落,抓取频率不再下降。

偶发 500 比持续 500 更危险,因为不容易被发现,但足以让蜘蛛降低整站抓取频率,还会影响新页面收录。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189