强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

【前言】

    系统最近出现了一个问题,经过相应的排查解决了;在此记录一下解决的整个过程,如果大家遇到类似问题以供参考,另外由于经验有限,如果小编有没有考虑到地方,欢迎在评论中留言。

【问题—复现—原因—解决】

   一、问题

    我们项目线上环境是部署在阿里云上,相关的部署情况是之前博文《高校云平台(十五):Keepalived+Nginx实现高可用,反向代理---Nginx安装及配置》中的效果图,大家有兴趣可以参考一下;

    上线后发现一个蹊跷的问题,线上偶尔会报502 Bad Gateway(如下图);频率大概每天会出现三到五次,每次持续五分钟左右。

          

   二、复现

 

       1、排查过程中只能等出现这个问题并没有将问题复现出来,为了复现问题,自己写了相关流程,让相关人员辅助确定问题;结果是并没有复现问题。      

         (1)前提:当访问环境出现502时进行如下测试步骤

         (2)访问部署在nginx另外测试环境,可能出现三种情况:

              ①同样显示 502页面

              ②显示系统备案(在Nginx中做出现502错误导向图)

                

              ③显示正常页面(自己做的测试页面)

               

         (3)在浏览器中输入环境所对应的IP地址访问,查看出现情况:

              ①出现502错误界面

              ②能正常访问到系统登录界面

         (4)在浏览器中直接访问公司机房映射到外网的IP进行访问,查看出现情况:

              ①出现502错误界面
              ②正常访问到系统登录界面

         (5)出现其他情况

       2、询问阿里云客服,没有确定问题

          我们线上环境是使用的阿里云的服务器,于是和阿里云方面进行沟通,进行了相关排除,排除方面是参考阿里云的社区文章---负载均衡返回 HTTP 500/502/504 错误的处理并没有确定问题;

       3、复现问题:

          在我们录制系统视频的时候,终于将这个问题再次复现出来---当点击某个功能时系统出现502,经过尝试已经确定这个事件可以使场景复现。

   三、原因

       复现问题后,迅速进行了问题出现的原因,查看阿里云Nginx的错误日志,根据时间找到了问题的根源,中文乱码,如下图:

       

   四、解决

       1、解决:

          确定中文问题后,核实相关代码及服务器的配置,发现导致中文转码失败的是web容器的配置文件中忘记加转码注释导致的。web容器配置文件加转码注释截图如下: 

               

       2、测试:

          重新再次点触发502的功能,发现这次正常了。

       3、关于转码问题:

         (1)正确配置情况:

              ①代码中进行转码配置,web容器中没有进行转码配置;代码中转码配置如下:

               

              ②web容器中进行转码配置,代码中没有进行转码位置;

         (2)错误配置情况:

              ①代码中和web容器中都没有进行转码配置;

              ②代码中和web容器中都进行转码配置。

【总结】

 

    1、出现问题后要从错误日志文件着手快速定位问题;

    2、现在已经确定导致502出现一个原因,并不能保证没有其他的原因,以后可能还会出现502到时候再排查。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐