当前位置:网站首页>一名合格的程序员是如何优雅地解决线上问题的?
一名合格的程序员是如何优雅地解决线上问题的?
2022-08-08 12:08:00 【InfoQ】

BUG分类
系统级别bug
linux定位工具
1.CPU高负载,甚至100%?

2.某一进程存在异常嫌疑,想快速知道它的状态?
[[email protected] ~]# ps -ef | grep queuejob
root 1303 1 0 Apr17 ? 00:00:00 /usr/sbin/queuejob
root 3260 3087 0 Apr17 ? 00:00:00 /usr/bin/queuejob /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
root 24174 19508 0 11:39 pts/0 00:00:00 grep --color=auto ssh
[[email protected] ~]# ps -aux | grep queueA
root 1303 0.0 0.0 82468 1204 ? Ss Apr17 0:00 /usr/sbin/queueA
root 3260 0.0 0.0 52864 572 ? Ss Apr17 0:00 /usr/bin/queueA /bin/sh -c exec -l
root 24188 0.0 0.0 112652 956 pts/0 S+ 11:39 0:00 grep --color=auto ssh
[[email protected] ~]# ps aux | sort -nk 3
[[email protected] ~]# ps aux | sort -rnk 4
3.我想知道内存&磁盘的使用情况?

Procs(进程):
r: 运行队列中进程数量
b: 等待IO的进程数量
Memory(内存):
swpd: 使用虚拟内存大小
free: 可用内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap(交换):
si: 每秒从交换区写到内存的大小
so: 每秒写入交换区的内存大小IO:(现在的Linux版本块的大小为1024bytes)bi: 每秒读取的块数bo: 每秒写入的块数
System(系统):
in: 每秒中断数,包括时钟中断
cs: 每秒上下文切换数
CPU(以百分比表示)
us: 用户进程执行时间(user time)
sy: 系统进程执行时间(system time)
id: 空闲时间(包括IO等待时间),中央处理器的空闲时间
wa: IO等待时间

业务级别bug
如何定位到业务bug?

方案设计
代码设计
设计模式
- 工厂(Creator)角色:工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
- 抽象产品(Product)角色:它负责描述所有实例所共有的公共接口。
- 具体产品(Concrete Product)角色:创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

- 主体(Main):业务主体逻辑、字段等。
- 主体具体实现类(MainComponent):主体具体的实现类。
- 装饰者(Decorator):要做的装饰扩展逻辑接口。
- 装饰者具体实现类(DecoratorComponent):扩展逻辑的具体实现类。


架构设计
系统高性能 & 高可用
- 使用缓存:缓存的作用是为了系统的读能力。将用户经常访问的数据扔到缓存里面可以有效地提高访问速度并且减少数据库的压力。

- 服务降级 & 限流:若短时间内流量激增影响到服务器性能,可考虑降级边缘业务以保证核心业务的可用性和性能。


- 高可用架构:重要性不言而喻。同城多活、异地多活的架构部署可以保证单机房挂掉的情况下流量可以迅速切换到其他机房让核心业务不受影响。可谓是防止系统宕机必备良药啊!

做好事故复盘
边栏推荐
- 这个选项是不是当数据库主键或唯一键发生冲突时替换数据
- C语言详解系列——指针与结构体
- C# 反射 操作列表类型属性
- 转转商品系统高并发实战(数据篇)
- 神经网络分类
- day02 -DOM—高级事件(注册事件、事件监听、删除事件、DOM事件流、事件对象、阻止默认行为、阻止事件冒泡、事件委托)—常用鼠标事件—常用的键盘事件
- 【AI系统前沿动态第45期】Hinton:深度学习的下一个大事件;一块GPU训练TB级推荐模型不是梦;AI-GPU显存优化发展史
- 请问如何实现两个不同环境的MySQL数据库实时同步
- 内网渗透学习(五)域横向移动——PTH&PTK&PTT
- 【cookie 临时存储数据,WebStorage ,sessionStorage】
猜你喜欢
leetcode-636:函数的独占时间
Replication监控及自动故障切换
leetcode:761. 特殊的二进制序列【递归 + 转换有效括号】
Mysql索引优化实战
刷题《剑指Offer》day12
Study: Toxic PFAS chemicals make rainwater unsafe to drink around the world
Combining "xPlus" to discuss the innovation and change of software architecture
Mysql的分布式事务原理理解
研究:有毒的PFAS化学品使全球各地的雨水无法安全饮用
Kunpeng Developer Creation Day 2022: Kunpeng Full-Stack Innovation and Developers Build Digital Hunan
随机推荐
JPA之使用复合主键
五面阿里巴巴拿offer后定级P6:分享自己的面试经历
这个选项是不是当数据库主键或唯一键发生冲突时替换数据
ssh 安全 之 密钥登录
vim /etc/profile 写入时 出现 E121:无法打开并写入文件解决方案
软件测试之测试代表用户
宏任务和微任务——三目算符与加号优先级——原生的js如何禁用button——0xff ^ 33 的结果是——in的用法——正则匹配网址
各位,我想知道,既然数据全部读取过来存放内存,我flink sql窗口关闭之后再次查询这个cdc映射
C语言详解系列——指针与结构体
MYSQL 的 MASTER到MASTER的主主循环同步
ets声明式ui开发,怎么获取当前系统时间
About the Celery service report under win Process 'Worker' exited with 'exitcode 1' [duplicate]
【C语言】[编程题]倒置字符串
(原创)[C#] GDI+ 之鼠标交互:原理、示例、一步步深入、性能优化
shell基础知识合集
Replication监控及自动故障切换
DDoS攻击为什么是无解的
day02 -DOM - advanced events (register events, event listeners, delete events, DOM event flow, event objects, prevent default behavior, prevent event bubbling, event delegation) - commonly used mouse
Redis的那些事:一文入门Redis的基础操作
论文阅读《Omnidirectional DSO: Direct Sparse Odometry with Fisheye Cameras》