黑马点评,后端请求没问题,前端页面有时候请求超时,无响应数据?

失败的发现过程

你看上面那里本来是有图片的,有时就没有,右边那里失败,连响应码都没有

然后我多刷几次就变成了下面不行了

开始怀疑是请求超时的问题,可以询问群友,但是大家貌似都没发现问题

怎么会这样?

在接口测试工具这里无论我发送多少次,都没有出现问题

逐渐发现问题所在,解决问题!!!

询问了ai也没有找到问题。最后上浏览器查找,发现有一个通过在前端的ajax请求延长请求时间成功了,我也跟着把ajax方法请求的timeout改成10秒,最后竟然成功了

xml 复制代码
 <script>
    //写在这位置对吗 对的
    axios.defaults.timeout = 3000;//全局配置
    axios.defaults.withCredentials = true;//这句代码必须写吗  必须 携带cookie保持会话
    const app = new Vue({
      el: "#app",
      data: {
        isReachBottom: false,
        types: [], // 类型列表
        blogs: [], // 播客列表
        current: 1,// blog的页码
      },
      created() {
        // 查询类型
        this.queryTypes();
        this.queryHotBlogsScroll();
      },
      methods: {
        queryTypes() {
          axios.get("/shop-type/list")
            .then(({ data }) => {
              this.types = data;
            })
            .catch(err => {
              console("分类错误");
              this.$message.error(err);
            })
        },
        queryHotBlogsScroll() {
          axios.get("/blog/hot?current=" + this.current)
            .then(({ data }) => {
              data.forEach(b => b.img = b.images.split(",")[0]);
              this.blogs = this.blogs.concat(data);
            })
            .catch(err => {
              this.$message.error(err)
            })
        },
        addLike(b) {
          axios.put("/blog/like/" + b.id)
            .then(({ data }) => {
              this.queryBlogById(b)
            })
            .catch(err => {
              this.$message.error(err)
            })
        },
        queryBlogById(b) {
          axios.get("/blog/" + b.id)
            .then(({ data }) => {
              b.liked = data.liked;
              b.isLike = data.isLike;
            })
            .catch(() => {
              this.$message.error
              b.liked++;
            })
        },
        onScroll(e) {
          let scrollTop = e.target.scrollTop;
          let offsetHeight = e.target.offsetHeight;
          let scrollHeight = e.target.scrollHeight;
          if (scrollTop + offsetHeight > scrollHeight && !this.isReachBottom) {
            this.isReachBottom = true

            // 再次查询下一页数据
            this.current++;
            this.queryHotBlogsScroll();
          } else {
            this.isReachBottom = false
          }
        },
        toShopList(id, name) {
          location.href = "/shop-list.html?type=" + id + "&name=" + name
        },
        toBlogDetail(b) {
          location.href = "/blog-detail.html?id=" + b.id
        }
      }
    })
  </script>

仍然感觉没有彻底解决,想找优化方案

但是感觉还是很疑惑,为什么变得怎么慢了,查询一个hot新闻需要两秒多?

最后通过ai提示说可能是nginx的配置问题 我突然想起我在nginx的负载均衡配置设置了两个 后端端口,而我在idea只启动了一个端口 (- Nginx 配置了 upstream backend { 8081, 8082 },但仅启动了 8081。),导致50%的请求转发到未启动的8082端口,造成超时!!最后把idea 的8081和8082端口都启动了,成功解决!

总结

  • 超时直接结束:这是客户端(浏览器/Axios)的主动行为,需通过代码扩展重试逻辑。所以直接结束了这个方法,没有响应数据
  • 本次错误根源:Nginx 配置和后端实例数量不匹配,导致请求失败率高达 50%。
相关推荐
IT_陈寒1 分钟前
Python开发者都在偷偷用的5个高效技巧,你竟然还不知道?
前端·人工智能·后端
kevinzeng2 分钟前
mysql和redis数据一致性的策略
后端
小码哥_常3 分钟前
一文搞懂双Token、SSO与第三方权限打通,附实战代码
后端
SimonKing6 分钟前
5分钟学会!把代码从本地推送到 GitHub,就是这么简单
java·后端·程序员
玹外之音6 分钟前
Spring AI 11 种文档切割策略全解析
java·spring·ai编程
灵境空间9 分钟前
企业微信 AI 机器人 PHP SDK —— 免回调地址,三行代码接入,支持流式回复
后端
陈随易16 分钟前
Vite 8正式发布,内置devtool,Wasm SSR 支持
前端·后端·程序员
CodeSheep23 分钟前
首个OpenClaw龙虾大模型排行榜来了,国产AI霸榜了!
前端·后端·程序员
Java练习两年半24 分钟前
互联网大厂 Java 求职面试:技术栈与微服务深度解析
java·微服务·面试·技术栈
Moment26 分钟前
想转 AI 全栈?这些 Agent 开发面试题你能答出来吗
前端·后端·面试