慢查询如何拖垮蜘蛛抓取:一个数据库层的案例
前台看起来正常,抓取量却持续下滑,问题藏在数据库。慢查询影响抓取的机制与治理。
一个典型案例:页面手动打开都正常,抓取量却连续三周下滑,最后在数据库慢查询日志里找到答案。
机制
蜘蛛的并发是用户流量的数倍,页面动态查询在小并发下毫秒级完成,蜘蛛一来并发叠加,无索引的查询瞬间拖垮响应,蜘蛛端表现为大面积超时。
定位方法
对照抓取量下滑的时间点查慢查询日志;数据库层面看同时连接数与锁等待;应用层看请求队列堆积。三处时间线重合即可锁定。
治理顺序
第一步给高频查询补索引,收益最大见效最快;第二步把列表页改为可缓存输出;第三步读写分离或加对象缓存。多数场景第一步就够了。
预防
把慢查询阈值设为一秒并接入告警,任何新上线的页面模板先过一遍查询计划。抓取量是站点健康的温度计,而数据库往往是病根。