返回顶部
首页 > 资讯 > 前端开发 > JavaScript >web开发怎么排查超时问题
  • 316
分享到

web开发怎么排查超时问题

2024-04-02 19:04:59 316人浏览 安东尼
摘要

这篇文章主要讲解了“web开发怎么排查超时问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WEB开发怎么排查超时问题”吧!一气呵成,bug 侧漏var&n

这篇文章主要讲解了“web开发怎么排查超时问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“WEB开发怎么排查超时问题”吧!

一气呵成,bug 侧漏

var request = require('request');
exports.handler = function(event, context, callback) {    console.log("event: " + event);    console.log('context: ', JSON.stringify(context));    const options = {
        url: 'https://saweather.market.alicloudapi.com/spot-to-weather?area=%E6%B3%B0%E5%B1%B1&need3HourForcast=0&needAlarm=0&needHourData=0&needIndex=0&needMoreDay=0',
        headers: {
            Authorization: 'APPCODE 5d9129e294fc4f518793ae9f9a15dbff'
        }
    }
    request(options, function (error, response, body) {        if (error || response.statusCode != 200) {            console.log("error " + error);            return 
        } 
        console.log(body.day_weether);
    });
};

很简单的一个 nodejs 函数,刚刚接触函数计算往往会意气风发的一口气抒写出这样一段代码,通常是为了简单测试一下函数的使用流程。但是发布到上去后,却出现了调用超时的问题。

大胆猜测,小心求证

首先,在无从下手的情况下,你大胆猜测如下:

  1. 函数入口写错了

  2. 代码中的逻辑有问题

  3. 函数计算服务有问题

为了排除其中的 3 选项,首先通过 fun local,在本地运行测试:

fun local invoke nodejs_timeout

得到结果:

web开发怎么排查超时问题

可以看到,程序也被卡在这里了。由此,可以排除掉 3 的可能性。

接着,可以通过加一些日志,或者单步调试来进一步缩小排查的范围,这里选用单步调试,因为这种方法往往更简单。

首先,利用 vscode 在侧边栏下一个断点:

web开发怎么排查超时问题

然后使用以下命令将函数以调试的方式运行起来(调试基本用法 参考 ,这里不再过多阐述):

fun local invoke -d 3000 nodejs_timeout

然后单击 VSCode 的开始调试按钮进行调试:

web开发怎么排查超时问题

可以看到,函数被正确的调用了,且进入到了入口函数。到此为止,可以排除掉 1 的可能性。

接下来,就要确认 2 可能性中存在的问题。

在 request 处的代码设置断点,continue 到里面,然后在 Local 可以看到运行到此处时的变量的值。

web开发怎么排查超时问题

可以看到,Http 请求返回的 resposne 的 statusCode 为 200,符合预期。body 也是有数据的,这个也符合预期。

body.weakday 放到 watch 里面执行一下,看下结果。

web开发怎么排查超时问题

这个就不是预期中的值了。

仔细看下 body 这个对象,发现其显示格式不对,通过 typeof 将 body 的类型打印出来:

web开发怎么排查超时问题

这货竟然是个 string

刚想破口大骂,但一想这代码是自己写的,赶紧闭嘴。

那就转成 json 吧。

但转完后,发现事情更不对了,day_weether 并不直接在 body 下,而是隐藏的很深。

web开发怎么排查超时问题

而且名字不叫 day_weether,这里有个拼写错误。正确的写法应该是:

JSON.parse(body).showapi_res_body.f1.day_weather

What the.... 脏话都到嘴边了,但一想代码自己写的,总不能骂自己吧,赶紧修吧。

把正确的表达式贴到 Watch 里面,查看,果然能够取到正确的值:

web开发怎么排查超时问题

验证完毕后,将正确的值粘贴到代码中,心想,总算解决了。

重新运行一下函数,发现果然能够取到数据了:

web开发怎么排查超时问题

但函数依旧卡在这里,并没有继续往下走————超时的问题依旧存在!

现在,愤怒的心情已经没有了,取而代之的是蓝瘦,香菇。站起身,望望窗外,让冷风肆虐你的脸庞。许久,心里平静一些了。

山穷水尽,柳暗花明

冷静下来,理一理线索:

从刚才的调试结果来看,函数已经运行,且获得了正确的结果,但是函数却没有结束,直到超时。突然,一个隐约的答案在你身边徘徊,你拼命想要抓住,来回踱步,蓦地,像是出现了救命稻草一般,打开了函数计算 Nodejs 的 文档 ,你用尽力气摆动眼球,快速阅读文档,并在心里恳求那根救命稻草的出现。恍然间,你如同穿越了一道厚重的铁门,身边的光线突然由暗变亮,你被这明亮的光线刺的睁不开眼睛。但你知道,答案就在这刺眼的光芒里。眼泪,没能止住,顺着你的脸庞缓慢地流了下来。终于,你松开了紧握的拳头,弯下了一直挺直的腰板,眼泪鼻涕突然倾泻而出,你————失声痛哭。所有的委屈从内心经过喉咙、鼻子、眼睛发泄出来,伴随着这一阵阵渐渐衰弱的回荡声,远去。

哭罢,擦干眼泪,平复下自己的心情,将那一段你追寻许久的答案缓慢但却有力的敲击出来:

callback(null, JSON.parse(body).showapi_res_body.f1.day_weather);

终于,这段代码就如同你家叛逆的孩子,脱去叛逆的伪装,显现出它乖巧的样子:

web开发怎么排查超时问题

欲善其事,先利其器

经过这一次事件,你总结出三条经验:

  1. 写代码要耐心、细心,每一段代码都要经过思考。一口气将功能写完,往往是看上去写的快,但实际上会埋很多坑,坑到别人还好,往往不小心会把自己坑了。

  2. 要多读文档。使用语言,要读语言文档,使用第三方库,要读库的文档,使用产品,要读产品文档。如果不仔细阅读仅凭自己的猜测去写,写出的代码往往漏洞百出。男人千万不要硬撑,别对自己这么很。累了要休息,可以读读文档放松下。俗话说得好,磨刀不误砍柴工!

  3. Fun 工具的熟练使用重中之重。 在前两点都没做到的情况下,却能最终将问题排查出来,Fun 工具功不可没!但与之功劳成反比的是,对 Fun 工具的学习尤其是本地调试功能,花的时间反而是最少的,如此巨大的收益比,使自己下定决心,一定要再花些时间,把 Fun 工具 吃透!

总结完,你又用心的看着自己写下的代码,就如同看向自己的孩子,宠溺、疼爱、气愤各种心情夹杂在一起。突然,你一皱眉,呵斥道:这样不对,异常的时候,也要返回!

于是,你纠正了代码的错误行为:

if (error || response.statusCode != 200) {    console.log("error " + error);
    callback(error, null) ;
}

感谢各位的阅读,以上就是“web开发怎么排查超时问题”的内容了,经过本文的学习后,相信大家对web开发怎么排查超时问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: web开发怎么排查超时问题

本文链接: https://lsjlt.com/news/87898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • web开发怎么排查超时问题
    这篇文章主要讲解了“web开发怎么排查超时问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web开发怎么排查超时问题”吧!一气呵成,bug 侧漏var&n...
    99+
    2024-04-02
  • java web开发中大量数据导出Excel超时(504)问题解决
    import java.io.IOException;import java.io.OutputStream;import java.lang.reflect.Field;import java.text.SimpleDateFormat;...
    99+
    2023-05-31
    java excel 数据导出
  • Web开发时碰到的问题有哪些
    这篇文章将为大家详细讲解有关Web开发时碰到的问题有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。  以下是我开发时碰到的问题以及心得经验,花了些时间调试,贴出来避免大家少走弯路。   1、xml文件...
    99+
    2023-06-08
  • 记一次线上SpringCloudFeign请求服务超时异常排查问题
    由于近期线上单量暴涨,第三方反馈部分工单业务存在查询处理失败现象,经排查是当前系统通过FeignClient调用下游系统出现部分超时失败(异常代码贴在下方)。 Caused by: ...
    99+
    2024-04-02
  • 怎么排查goroutine泄漏问题
    这篇文章主要介绍“怎么排查goroutine泄漏问题”,在日常操作中,相信很多人在怎么排查goroutine泄漏问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么排查go...
    99+
    2024-04-02
  • java线上问题怎么排查
    要排查Java线上问题,可以采取以下步骤: 收集问题信息:收集问题的现象、出现的频率、受影响的用户、相关日志信息等。 查看日...
    99+
    2023-10-27
    java
  • ios开发try-catch引起的野指针问题排查
    目录1、野指针问题2、崩溃栈3、场景复现代码4、问题分析5、上报可能引起野指针崩溃栈1、野指针问题 【EXC_BAD_ACCESS (SIGSEGV) / KERN_INVALID_...
    99+
    2024-04-02
  • 网站高防IP请求超时怎么排查
    网站高防IP请求超时排查的方法:1、查看源站的流量和请求量是否有大量增长,对比高防IP管理控制台中的监控,看是否有异常;2、查看源站服务器的进程状态、CPU/内存占用情况、机房带宽的监控情况等,看是否有异常;3、如果是个别客户端出现502错...
    99+
    2024-04-02
  • 解决MongoDB技术开发中遇到的查询超时问题的方法研究
    解决MongoDB技术开发中遇到的查询超时问题的方法研究摘要:在MongoDB技术开发过程中,我们常常会遇到查询超时的问题。查询超时可能会导致应用程序无法及时获取到所需的数据,影响系统的性能和稳定性。本文将深入研究MongoDB查询超时问题...
    99+
    2023-10-22
    MongoDB 技术开发 查询超时
  • mysql自增id超大问题的排查与解决
    引言 小A正在balabala写代码呢,DBA小B突然发来了一条消息,“快看看你的用户特定信息表T,里面的主键,也就是自增id,都到16亿了,这才多久,在这样下去过不了多久主键就要超出范围了,插入就会失败...
    99+
    2024-04-02
  • 怎么解决redis连接超时问题
    这篇文章给大家分享的是有关怎么解决redis连接超时问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。问题描述:redis连接超时,然后定位到redis配置文件目录被删除,接着尝...
    99+
    2024-04-02
  • tomcat启动时卡住问题如何排查
    本篇内容主要讲解“tomcat启动时卡住问题如何排查”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“tomcat启动时卡住问题如何排查”吧!正常项目无法访问(Linux 服务器),启动tomcat...
    99+
    2023-07-05
  • 怎么快速排查Linux硬件问题
    这篇文章给大家分享的是有关怎么快速排查Linux硬件问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.快速诊断设备、模块和驱动程序故障排查的第一步通常是显示Linux服务器上安装的硬件列表。你可以使用ls命令...
    99+
    2023-06-28
  • java内存逃逸问题怎么排查
    Java内存逃逸问题通常是指在程序中创建的对象在其作用域之外仍然被引用,导致无法被垃圾收集器回收。以下是一些排查Java内存逃逸问题...
    99+
    2023-10-23
    java
  • linux内存泄漏问题怎么排查
    要排查Linux中的内存泄漏问题,可以按照以下步骤进行:1. 监控内存使用情况:使用工具如top、free或htop等监控系统的实时...
    99+
    2023-10-21
    linux
  • 云服务器超时问题怎么解决
    在解决云服务器超时问题时,可以尝试以下几个方法:1. 检查网络连接:确保服务器与互联网的连接正常。可以使用ping命令测试服务器是否...
    99+
    2023-09-16
    云服务器
  • HTML最后一排显示超出问题怎么解决
    这篇文章主要讲解了“HTML最后一排显示超出问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“HTML最后一排显示超出问题怎么解决”吧! 设计方式...
    99+
    2024-04-02
  • 线上SpringCloud Feign请求服务超时异常怎么排查
    今天小编给大家分享一下线上SpringCloud Feign请求服务超时异常怎么排查的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-26
  • 分析web前端开发中跨域问题
    本篇内容介绍了“分析web前端开发中跨域问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么同源策略同源...
    99+
    2024-04-02
  • Java中怎么处理异步超时的问题
    这篇文章主要讲解了“Java中怎么处理异步超时的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java中怎么处理异步超时的问题”吧!一天,我在改进多线程代码时被Future.get()卡...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作