关于使用阿里云CDN加速后出现504错误的研究

2017-06-28 19:18:45 admin 240

前文

原来写过一篇关于“使用CDN加速后搜索引擎蜘蛛抓取出现503错误”的文章(http://www.kungg.com/post/cdn_503.html),当时没有深入地去琢磨CDN产生50X错误的原因。由于前几天申请百度HTTPS站点支持,需要把搜索引擎的域名解析从源站换回到CDN上;查日志时,发现百度蜘蛛抓取时产生了不少504错误

过程

1.发现问题

这次记录的504错误是从阿里云CDN报表中发现的

微信截图_20161208214854.png 关于使用阿里云CDN加速后出现504错误的一点点研究 分享 1

从图中可以看到今天出现了不少504错误,504 Gateway Timeout错误,超时错误。

2.排障

既然是CDN请求出的问题,那么下载CDN日志来分析一下应该能找出问题的症结所在

分别从阿里云和自己的主机那里下载了今日的访问日志来分析(阿里云CDN可以在“日志管理”中下载最近两周的访问日志)


微信截图_20161208215400.png 关于使用阿里云CDN加速后出现504错误的一点点研究 分享 2

下面以cdn.log指代从阿里云下载到的CDN访问日志,website.log指代源站的访问日志

在cdn.log中,构建正则表达式“504.+baiduspider”搜索百度蜘蛛爬出来的504记录,找到如下记录

微信截图_20161208221043.png 关于使用阿里云CDN加速后出现504错误的一点点研究 分享 3

这条记录上方有很多同样的请求,且都来自于百度蜘蛛;同样搜索website.log也找到了了当时CDN回源的记录,从返回的500代码来看,应该是同时处理的线程太多,导致服务器报错500;也就是服务器太忙了,不给响应。基于这一点,可以肯定一点:源站服务器分配的连接数和线程数限制,导致服务器同一时间收到过多请求后,停止响应

微信截图_20161208221437.png 关于使用阿里云CDN加速后出现504错误的一点点研究 分享 4

结论

虚拟主机毕竟是虚拟主机,一分钱一分货,大量请求到来时,网站阻塞

还有一点,阿里云CDN在回源30秒内没收到源站回复也会给报504错误

这也是造成gateway timeout的主要原因

解决的办法

花钱,升级主机