
打理站点的SEOer,隔段时间总习惯去百度搜索资源平台刷一眼抓取状态。不少人都碰到过这种闹心的情况:网站前台打开一切正常,用户访问没任何问题,可抓取诊断结果里全是socket读写错误,整站抓取失败。很多人第一反应是程序出了bug,改模板调代码折腾半天,问题却一点没好转。其实这类错误基本和网站程序没关系,问题大多出在服务器和网络层面。
最常见的诱因是服务器网络状况不佳。要么是高峰期带宽被占满,蜘蛛请求发过来,数据传了一半就卡住,直接触发读写超时;要么是服务器所在机房与百度蜘蛛节点之间的路由出现丢包、延迟过高,连接能建立但数据传不通。尤其是低配的小带宽服务器,赶上流量高峰或者爬虫集中访问,很容易出现这类问题。
安全防护策略拦截也是高频原因。现在服务器基本都会装安全软件,云服务商也自带安全组规则,很多人为了防恶意爬虫,会设置请求频率限制、IP访问限制。百度蜘蛛抓取频率高的时候,很容易被误判成恶意攻击,被临时限制连接权限。连接能建立,但读写数据被防火墙拦截,最终就会显示socket读写错误。还有些安全规则直接屏蔽了部分蜘蛛IP段,也会出现同样的报错。
HTTPS站点还要额外留意SSL配置问题。很多人只在意浏览器能不能正常打开网站,忽略了搜索引擎蜘蛛的SSL兼容性。如果证书过期、加密套件设置过于特殊,或者SSL协议版本不兼容,蜘蛛在完成TCP连接后,SSL握手环节出问题,也会报读写相关的错误。这种情况普通用户访问可能完全正常,只有蜘蛛抓取会失败,很容易被忽略。
另外服务器负载过高也会导致这类问题。CPU、内存占满,或者磁盘IO卡住的时候,web服务没法及时响应请求。蜘蛛虽然成功连上了服务器,但迟迟等不到返回的数据,超过超时时间就会判定为读写错误。这种情况一般集中在站点访问高峰时段,过了高峰期抓取又会恢复正常,很有规律性。
碰到这种问题不用乱改程序,按顺序排查基本都能定位。先确认网站前台能不能正常访问,排除站点宕机的情况;再去服务器后台看带宽、CPU、内存的使用情况,高峰期有没有资源耗尽的问题。
之后检查安全规则,看看防火墙、安全软件的拦截日志,有没有百度蜘蛛的IP被拦截,把官方公布的蜘蛛IP段加到白名单里,调低针对正规蜘蛛的频率限制。如果是HTTPS站点,用在线SSL检测工具查一下证书状态和兼容性,确保主流协议都支持。
都排查完还没解决的话,可以去搜索资源平台重新提交抓取诊断,同时对照服务器的访问日志,看蜘蛛的请求到底停在了哪一步,就能精准找到问题根源。
socket读写错误看着吓人,其实大多不是严重故障,就是服务器配置或者网络的小问题。发现后及时排查处理就行,不用过度焦虑,也别盲目乱改程序和页面内容。平时多留意服务器的运行状态,定期检查抓取情况,能避免很多这类隐性的收录障碍。
下一篇:网站收录突然全部没有了