如何排查网站出现502的问题?

作者:动易软件 来源:本站原创 点击数: 发布时间:2022年04月12日

网站出现502问题时的排查思路如下:

1、重点检查最常访问的页面,有没有页面输出缓存。如果没有,基本上就是这个原因引起的。继续检查几个地方:
1)后台“运维中心--平台参数配置”这里是否关闭了页面输出缓存功能。假如全站没有页面输出缓存,一般就是这里的原因。
2)节点的参数中是否禁用了页面输出缓存。如果只是个别节点的页面没有页面输出缓存,一般就是这里的原因。
3)检查HTML代码中是否有名为“__RequestVerificationToken”的隐藏字段,这个是防CSRF攻击功能输出的代码,有这个,就不会有页面输出缓存。而输出这个的主要原因是在布局页的源代码中有“@Html.AntiForgeryToken()”这行代码;4.0之前的版本在‘用户登录弹出窗’公版标签中,需要删除@Html.AntiForgeryToken()。

30c99c26c0d74e7981ff13160b84009b.png

4)浏览器中F12在头部中查到有一个参数IPLimitType,代表设置了IP访问限定

211ab79747ed451fa91f13eacb31eee9.png

检查平台、站点、节点、内容的IP访问限定,需要去掉IP访问限定。

在SiteAzure3.3.2及以前版本中,对于设置了IP访问限定、用户访问权限、文章签收专属文档时,站点首页的页面执行时间大约为1秒左右,栏目列表页和内容页的页面执行时间大约为150毫秒左右。这是因为:如果设置了IP访问限定、用户访问权限、文章签收专属文档,系统就简单的改成不使用页面输出缓存,而是走完整的页面解析过程,并在页面解析过程中进行权限判断,如果没有权限则显示提示信息。

f47f76c3b4ff402d97341b127ffb2704.png

01c87df31e1649babd92e94192dcb8f5.png

e3d6411019824c68b139332c5a601cf7.png

bd6621d6e49c4d71b34fbd238d573b5d.png

5)如上述检查无误,某个节点或者内容页还是无法生成缓存,可以查看系统错误日志;

    页面模板中的某个标签解析报错,虽然整个页面是正常的,但不会生成缓存文件。


2、检查在有缓存时页面的执行时间是否正常。SiteAzure的正常值应该是15毫秒左右,大部分应该是低于15毫秒。WebFuture 的正常值应该是1毫秒或者几毫秒(5毫秒以内)。如果达到上百毫秒甚至几百毫秒,可能是因为没有启用定时任务而导致的。如果关闭CC攻击防护,页面执行时间就正常了,那就可以确定是这个原因。因为系统需要定时清理掉CC攻击防护模块的访问记录表PE_AttackDefense_IpRequestRecord中的记录,假如没有定时任务,这个表中的记录就会越积越多,到了过百万条以后,就会严重影响CC攻击防护的性能。因为每个请求都要经过CC攻击防护模块的检查,所以就会导致网站的负载能力极限下降,遇到一点高并发就会出现502了。但SiteAzure 4.x 和 WebFuture 11.x 应该是没有这个问题了,因为改用了内存来处理。

3、检查没有页面输出缓存时,页面的执行时间是否正常(首页为1秒左右,列表页为100毫秒~200毫秒,内容页在100毫秒左右)。如果不正常,就可能会有慢查询。页面中的每个列表的正常解析时间应该在80毫秒左右,列表越多,页面执行时间就越长。所以如果首页调用的列表非常多,那页面执行时间要好几秒也是正常的。但列表页假如只有一个列表,也要几百毫秒甚至1秒多,那肯定是有问题(一般是慢查询)。而慢查询的原因一般是相关字段没有索引,或者MySQL数据库的IN查询等使用全表扫描引起的。

4、如果是有与第三方对接的接口,检查一下相关的接收日志表之类的地方。看看数据量是否过多。如果数据量比较多(比如过10万),而又有“排重”之类的设计,那也可能会是一个性能黑点。所以需要清理掉无用的旧记录。并且检查用于“排重”字段有没有索引。