线上问题分析
文章平均质量分 59
zhanglehes
这个作者很懒,什么都没留下…
展开
-
在macos上查看当前进程的栈信息
在调试程序时,如cpu莫名的高或低,一个常用的方式就是打印当前进行的调用栈,然后确认各线程的执行函数是否有异常。在linux系统中可以使用pstack命令,直接打印各线程的栈信息,可惜在macos上没有该命令。一种解决方式就是将代码迁移到linux平台上进行debug(事实上笔者也是这么做的,因为linux平台有很多熟悉的工具),但代码迁移存在成本(系统函数版本不一致),macos上的系统文件版本和linux平台上大概率是不同的。原创 2024-01-08 19:40:03 · 653 阅读 · 0 评论 -
记一次crash问题分析
本文介绍近期工作中遇到的一次crash,问题分析花费了不少时间,最终得以解决。原创 2023-10-17 11:52:57 · 119 阅读 · 0 评论 -
valgrind排查内存问题
valgrind能在保证程序不会core的情况,将存在double free的问题代码快速定位。原创 2023-09-18 15:11:29 · 255 阅读 · 0 评论 -
python包版本不一致问题排查
因为能确认该代码之前是能运行成功的,因此排除是代码的问题。同时怀疑是依赖的包版本发生了变化(在公共服务器上,有root权限的人都能随意改动)。pip install -v [package]==[version] // 安装指定版本的包。pip show [package] // 展示当前安装package的信息,包含版本号。pip install [package]== // 查看包有哪些适用版本。好嘛,使用的版本是4.21,明显高于代码中使用到的版本号。因此首先卸载该包,同时安装符合预期的版本。原创 2022-12-22 15:45:43 · 924 阅读 · 0 评论 -
微服务上线规范
上线规范的作用时尽可能避免(减少)因线上变动造成的事故。主要分为上线前、上线中和上线后的注意事项。原创 2022-07-15 16:30:58 · 500 阅读 · 0 评论 -
C++编译时遇到protobuf版本不一致的问题
我们的项目中会引用到各种sdk,项目代码和sdk中都有可能会使用protobuf。当protobuf版本不一致时,编译就会报错。有两种可能的报错信息This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer headers. Please update your headers.This file was generated by an older version原创 2022-06-09 17:58:51 · 3532 阅读 · 2 评论 -
服务上线到预发环境引起线上问题排查
目前从事的轨迹流服务,它是双机房多节点部署的。除了正式环境以外,还包括若干预发环境。本次事故介绍的是在预发环境上线出现的问题,解决办法和分析手段。服务A预发环境共有8台服务器,我先部署了三台。突然接收到线上正式A服务环境发出的报警,内容是存在部分下游机器的发送队列buffer超过阈值。当时没多想,先直接回滚代码。后来分析,线上A服务均会向其预发环境发送数据(引流),发送逻辑是:遍历所有的预发服务机器,如果在buffer中的数据量小于设定阈值,则选取该机器,否则判断下一个;若都超过阈值,则会选取最后一个机器;原创 2022-06-02 09:48:01 · 258 阅读 · 0 评论 -
c++ release和debug编译后的结果不一致
最近遇到一个问题,c++ release和debug编译后的结果不一致,查了h原创 2014-07-23 15:46:04 · 1189 阅读 · 0 评论 -
Gorm报invalid connection错误
背景新上的一个项目,使用gorm进行数据操作,线上报connection invalid错误。初步分析从报错信息来看,应该是mysql client连接的问题。看了一些网上类似问题的分析,其中一篇提到了数据库客户端如果长时间不使用,mysql server端会单方面关闭该连接。可以在mysql服务器上使用以下命令查看:SHOW VARIABLES LIKE '%timeout%';+-----------------------------------+----------+原创 2021-11-29 15:28:05 · 7613 阅读 · 0 评论