首页 > 其他分享 >带团队后的日常思考(十六)

带团队后的日常思考(十六)

时间:2024-11-07 09:57:01浏览次数:1  
标签:调用 错误 代码 十六 接口 依赖 日常 思考 服务端

一、日常问题

1)临时小需求

  在日常研发过程中,难免会临时加些小需求,例如增加个标识、字体换个颜色、间距增加等。

  这类需求虽然不复杂,但是很多时候都会打乱自己的开发节奏。

  最近我收到个修改需求,来来回回改了四次。因为只是和我口述了下需求,我按照口述修改。

  后面测试就发现了些场景需要过滤,再马上修复。上线后,由于没有设计稿,我所设计的界面效果,与产品所想的不一致。

  再做了两次修改,虽然花的时间不多,但是着实费劲。归根到底,还是因为需求不明确导致的。

  下次遇到此类问题,需要和产品将需求描述清楚,有必要的话,还可以叫上测试,从场景到呈现,都要一一询问,以免遗漏。

2)服务调用错误

  周二晚上有人上报某个排行榜数据不更新,排查后发现是 Node 调用服务端的服务没成功(服务调用错误 getaddrinfo ENOTFOUND xxx)。

  从而让 Node 报错引起 Pod 重启,接口就访问不到数据了。

  其实调用服务端接口都已经做错误捕获(try-catch),但是在 catch 分支中没有返回对象。

  最直接的办法就是先给一个默认的返回值,不出现 undefined 的错误,也能让 pod 不再重启。

  改完代码上线后也到了晚上 23 点,pod 是不再重启了,服务端接口大部分能成功调用,但也有比较少的失败。

  第二天来公司,运维和我说,后端的 Pod,当 CPU 过高时就会自动重启,而这种情况在访问量比较大的时间段会比较频繁。

  这个骚操作也是无奈之举,他们现在也没资源去做代码优化,只能通过重启的办法来缓解线上过慢的请求。

  那么运维给我们部署了一套单独的服务,专门就由我们来调用,不会重启,调用的域名更新后,果然不再有请求失败的错误了。

  其实还有一种叫做熔断的模式,就是如果发现上游服务调用慢,或者有大量超时的时候,直接中止对于该服务的调用,直接返回信息,快速释放资源。

  这里就需要再做代码优化了,后续可以优化优化。

3)数据库CPU异常

  从 10 月 8 号开始,每天凌晨 3 点数据库都会推送异常告警,CPU 的使用率超过了 60%。

  一开始以为是偶发现象,因为之前也有这种突然增长的情况,但每天都会告警就有问题了。

  找运维排查,说了一张表,将表名推给相关组排查,发现并不是他们的服务引起了。

  这说明运维的推断有误,因为每天都是定时的,所以感觉是在跑一个定时任务。

  运维再次锁定到一条 delete 语句,用于删除七天前的监控日志,执行时间长达 10 分钟,在这段时间,CPU 飙升。

DELETE FROM `web_monitor` WHERE `ctime` <= '2024-10-08 00:00'

  很有可能与最近的日志量上涨有关,之前每日的数据在 70W 条左右,而现在达到了 100W 条左右。

  运维说他那边也可以配置数据库的定时操作,然后在语句中会加 limit 限制,这样就不会占用太长时间。

  不过,我最终还是没有让他配置,主要是因为如果定时操作出现异常,还得找运维修复,并且没有告警,异常了也不会知道。

  这个服务对于我比较重要,所以还是决定自己优化,方式也简单,同样是加 limit 限制,只不过多几次循环。

  最近,服务端的接口也老报 500 错误,有几天报的比较厉害,都影响了我监控的性能指标,也反馈了两次。

二、工作优化

1)协作依赖

  最近在做组内 1V1 时,发现了协作依赖的问题。

  就是在多组协作时,会存在依赖关系,但这是个单向依赖,并且被依赖对象并不知道有人在依赖他。那么当修改或遗漏逻辑时,也不会去通知依赖人,就有可能出现问题。

  就是你的代码逻辑有个前置条件存在于其他组,当其他组更新代码时,并不知道会影响你,那你的这段代码就会无法执行,导致用户上报。

  这个双月遇到了两次这个问题,一次是我们依赖别人,另一次是别人依赖我们。

  有个审核的功能,服务端会将一条记录插入一张表中,我们会从这张表中去查是否有这条记录。

  但这次服务端换了个人做更新业务,他没有将记录插入,从而导致我们组的逻辑异常。

  这个问题我更倾向于觉得他们组对常规功能没有保留详尽的技术文档,出现了逻辑遗漏。

  另一次是数据组在做数据统计时,会依赖操作记录的一个字段,我们会写入这个字段,这次产品修改了这个字段的格式,从而导致统计异常。

  这个问题我更倾向于若有数据相关的需求,尽量提前告知数据组,避免无法统计结果。

  其实最简单直接的解决方案是提前通知依赖人,但是难点就是不知道有这么一个人存在,所以在实际项目中就会出现遗漏。

  而且我感觉这种协作问题应该还蛮多的。

2)告警不是一串数字

  国庆假期前,偶尔收到了几个 500 的错误,没有当回事儿,以为就是偶发现象。

  没想到国庆假期期间突然出现了大量的 500 警告,一查原来是网关转发的时候报 502、503、504 错误。

  这就导致收到了非标准的 JSON 格式,调用 response.data.xxx 就会报 undefined 的错误。

  知道原因后,马上修改,将网关转发改成内部的接口调用,并且给代码加了些 undefined 的判断。

  3 号 23 点多的时候发布代码,4 号的指标就正常了。

  期间还发现了大量的慢响应,是之前正常的 20 多倍,查看接口日志,最后锁定是依赖的服务端接口出现了异常。

  联系了运维和服务端的人,后者没有回应,前者去查了下,说是其他接口影响了整个服务,而这些接口并不是我们调用的。

  最后给我们单独配了 POD,只有我们访问的接口才会请求这个 POD,5 号的慢响应占比马上就恢复了。

  对数据的不敏感,以及无视告警,让自己在国庆期间还要连夜改代码,都是自己作的,怨不得别人。

  虽然是上游影响了下游,但是造成影响后,还是得下游来背锅,所以未来的话,数据还是要盯紧些,不要只是当成一串数字。

标签:调用,错误,代码,十六,接口,依赖,日常,思考,服务端
From: https://www.cnblogs.com/strick/p/18406625

相关文章

  • 学习笔记(二十六):资源分类与访问(Resources)
    概述:应用开发中使用的各类资源文件,需要放入特定子目录中存储管理。资源目录的示例如下所示,base目录、限定词目录、rawfile目录、resfile目录称为资源目录;element、media、profile称为资源组目录。resources|---base||---element|||---string.json||---media......
  • 渗透测试之shodan(GUI版)实战及思考——泷羽sec
    声明:        学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章。本文只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频(bilibili.com)https://space.bilibili.com/350329294导读:时刻保持谦......
  • 代码随想录算法训练营第十六天|leetcode513.找树左下角的值、leetcode112.路径总和、l
    1leetcode513.找树左下角的值题目链接:513.找树左下角的值-力扣(LeetCode)文章链接:代码随想录视频链接:怎么找二叉树的左下角?递归中又带回溯了,怎么办?|LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili思路:就是用一个东西存储result,使用后续遍历,如果遇到了最深的那一个值,就......
  • 流年诛仙十六职业星座版+单机安装教程+GM工具
    天给大家带来一款单机游戏的架设:流年诛仙十六职业星座版。游戏版本:v4.4.0只适用于单机娱乐,此教程是本人亲测所写,踩坑无数,如果你是小白跟着教程走也是可以搭建   亲测视频演示https://githubs.xyz/show/298.mp4 游戏安装步骤此游戏架设需要安装虚拟机,没有虚拟机的请......
  • 工作经验日常总结===20241105
    1.云服务器的sftp服务不可用:xshell连接不了(大概率是防火墙没有放行22端口导致):   一、查看服务是否正常运行(sftp是ssh的子程序,所以属于同一服务,端口号,登录账密都一样):ps-fe|grepssh   二、查看监听端口22,是否放行:netstat-alntup|grepssh   三、开启fire......
  • 【STM32开发之寄存器版】(十六)-CAN总线基础知识
    一、CAN简介本文主要参考瑞萨CAN入门书。CAN是ControllerAreaNetwork的缩写(以下称为CAN),是ISO*1国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的......
  • ComfyUI插画头像工作流:将日常照片转化为艺术佳作
    在数字创新的浪潮中,ComfyUI的插画头像生成工作流为艺术爱好者和设计专业人士提供了一个前所未有的创作工具。这个工具结合了尖端的人工智能技术,让用户能够将普通的照片转换成具有艺术风格的插画。无论是单人像、情侣照还是全家福,ComfyUI都能迅速呈现出具有个性化风格的作品......
  • 计量经济学(十六)——工具变量法
    在经济学和其他社会科学的研究中,研究人员经常希望通过观察数据来推断因果关系,以理解变量之间的影响机制。然而,实际数据往往受到多种因素的干扰,使得自变量和因变量之间可能出现内生性问题(Endogeneity),即自变量与模型的误差项存在相关性。这种内生性问题通常会导致普通最小二乘法(Ord......
  • 79 号文及信创浪潮下:低代码平台的多维核心能力剖析与战略价值思考
    一、引言在数字化时代的汹涌浪潮中,信创产业如同一座灯塔,为国家信息安全和自主可控发展照亮了前行的道路。国资委79号文的重磅发布,更是为信创在央企、国企中的落地实施吹响了冲锋号,明确了信息化系统国产化替代的时间表和路线图。在这一宏大的历史进程中,低代码平台作为新兴的......
  • QT中TextEdit或者QLineEdit以十六进制显示数组数据
    QT中TextEdit以十六进制显示数组数据在Qt(一种跨平台的C++图形用户界面应用程序开发框架)中,如果你想在QTextEdit中以十六进制格式显示数组数据,你可以使用以下步骤:创建一个QTextEdit控件在你的Qt应用程序中创建一个QTextEdit控件,用于显示文本。QTextEdit*textEdit=......