zoukankan      html  css  js  c++  java
  • 记录一次坎坷的debug之旅,NUXT框架页面多开假死现象,NUXT刚开始可以访问,突然就访问无响应,并且前后端均未出现任何报错提示:现在是早晨4点35分

    背景条件:前台系统框架NUXT,后台微服务注册NACOS,服务转发nginx

    问题出现:在springboot整合redis的时候,NUXT突然出现访问无效的情况,即访问index主页空白,页面一直显示正在加载。并且前后端无任何报错提示,浏览器控制台也无任何报错提示。但是有个奇怪的现象,即每次一开始启动服务时可以正常访问,当过了一段时间就会出现失效的情况。

    ------------------------------------------------------------------------------------

    问题分析:由于是在整合redis的时候出现的,首先我把目光对准了redis,因为是启动前端工程后一段时间才会出现这个bug,所以我猜测可能和redis的timeout属性会有相关。因此首先我认为问题可能出在后端

    Debug:恰好在配置redis的时候出现了一个奇怪的报错,但是并没有影响服务运行。于是我思考会不会是timeout的设置的原因导致的问题。于是经过一番搜索,明白了之所以会报错是因为高版本的IDEA要求在配置后面加上ms单位,即可解决问题

     

     测试:重新启动微服务进行测试,发现情况依然如此。并没有得到解决

    ---------------------------------------------------------------------

    问题分析:既然不是springboot配置文件中配置出的错,我猜想会不会是因为虚拟机中redis.conf配置文件里面的某个配置导致功能失效。

    Debug:打开虚拟机中的redis.conf配置文件,核对了几个主要的配置参数,发现并没有问题,排除该猜想。

    ------------------------------------------------

    问题分析:既然配置无报错无其他问题也不能解决,我决定尝试回滚代码,但是最早的备份是昨天中午的,回滚会丢失很多代码。于是我手动把redis的配置删掉,所有整合的过程全部回溯。

    测试:重新启动微服务进行测试,发现情况依旧,没有得到解决。

    -----------------------------------------------

    问题分析:这样看来有可能的情况是这个bug早就存在,但是一直没有被发现,只是在整合redis的时候被察觉了而已

    Debug:虽然大概率我认为是前端的问题,但是我决定重新测一下后端接口,并且开启了后台系统的前端工程,进行测试

    测试结果:页面成功获取到了数据并进行展示,说明后端接口并没有出现问题

    -------------------------------------------------

    问题分析:既然后端没有出现问题,我决定把重心放在前端。重新看前端,发现十几分钟过去了报了一个错(我测试了不下15次,重启电脑3次。但该错误仅仅出现过一次,但是这个错误或许就是关键所在,因此我特别留意了该错误)。错误如下,提高了是前端出问题的可能性

     Debug:既然有了报错。我开始在搜索引擎上通过下面两个方面进行搜索。第一个方面的关键字:NUXT,页面失效,页面空白,无法调用接口,突然打不开页面;第二个方面即根据前端报错进行搜索。搜索的结果有很多,第二个方面搜索到的包括1.因为nginx的问题 2.因为nacos的问题。可是这个页面调用的接口并没有进行跨服务的调用,并没有nacos的Feign功能,于是我排除了nacos的问题。然后是nginx,我打开nginx的配置仔细看一遍,并没有任何问题。

    于是我进行了下面三个尝试

      1.关闭nginx并重新启动,打开前端页面,测试:依旧无法打开页面

      2.关闭nginx并重新启动,重新启动前端工程,测试:发现可以打开页面,但过不了一会儿打开多个页面后又出现同样情况,无法访问

      3.nginx保持不变,重新启动前端工程,测试:发现可以打开页面,但过不了一会儿打开多个页面后又出现同样情况,无法访问

    ------------------------------------------------------------------------------------

    问题分析:经过上面的测试基本已经可以确定是前端工程出现了问题,因为NUXT我是第一次使用,并不熟悉。特别是当我打开百度进行搜索NUXT的时候,第一列赫然是   NUXT就是一个坑。让我不知道怎么下手了。

     但是上面说到我从两个方面进行了搜索,而第一个方面搜索到了一个答案,可是并没有引起我的注意,原答案如下。当时我只是从众多网页中看了一眼,然后并没有觉得有什么,因为下面的回答也说到了可能是他代码的问题。

     突然我有点觉得这个bug可能我要解决不了了,可是后面还有很多功能要做,如果卡在这里的话势必会对后面的功能开发产生一定影响。

    于是我第N次重启了服务,开始刷新。令我惊讶的是,这次居然没有出现bug,一切正常。

    于是我又重启了服务,打开了多个页面进行刷新,可是,又出现了bug。这时候我意识到可能是页面的问题,刚刚那个提问在我脑海中闪了一下

    于是再重启服务,开始刷新一个页面,没问题。再开一个页面进行刷新,没问题。再开一个页面,出现问题了,页面开始无法访问。

    再多试了几次之后,我总结掌握了规律:即只要我只使用一个页面进行访问,没有任何问题,但是只要我多开页面达到3个就会导致bug出现,之前能访问的页面也会无法访问。

    而这个问题正是之前那个楼主想要解决的问题。

    到此:我的心情终于开心了起来。

    但是:当我进行搜索出现这样问题的原因时,并没有人对此进行回答。。。

    --------------------------------------反思---------------------------------------------------

    这个bug的出现一个是因为本身框架可能有问题。

    另一个就是自己平常的习惯:多开网页进行测试,而不是反复刷新一个页面。

    最开始我以为是启动前端工程到达一定时间后就会出现bug,最后发现其实是因为多开了页面,并且开页面需要时间,让我误以为原因是在于时间,而不是数量

    但最终能找出问题的所在实在是不容易,耗费了几个小时的时间

    可是现在只知道问题所在,暂时还解决不了。

    ------------------------------------结语-----------------------------------------

    换个好点的框架用吧,睡个好觉!

  • 相关阅读:
    省队集训 Day1 残缺的字符串
    省队集训 Day3 吴清华
    省队集训 Day3 陈姚班
    Java多线程中的join方法
    Java多线程同步机制之同步块(方法)——synchronized
    java-实用的sql语句
    java-分页之页面分页
    java下实现调用oracle的存储过程和函数
    java-MySQL存储过程
    MySQL存储过程
  • 原文地址:https://www.cnblogs.com/skyvalley/p/14127804.html
Copyright © 2011-2022 走看看