试想一下,你用微信发消息,时不时的有一条消息发送不出去,或者发送出去了对方没有收到,或者上午发送的消息,下午才收到等等等等,这样的影响异常大和体验异常糟。随着互联网的发展和稳定,IT系统已作为一个基础建设应用在我们生活的方方面面。所以,软件系统的稳定性更为关键。以下是小编作为10年码农总结了一下系统中影响稳定性的一些常见问题,希望大家能有收获。
代码问题逻辑bug循环遍历遍历过程中修改数据Exception in thread "main" java.util.ConcurrentModificationException遍历过程中部分成功分页查询分页过程中修改数据分页过程中部分成功等值比较equals/====/!=基础类型与对象类型比较非同一业务含义的值比较空值比较isEmpty/isBlank/isNotEmpty/isNotBlankSQL条件缺失update的时候where条件缺失数据问题请求数据参数非法数据不存在数据不完整存储数据数据不存在数据存在多条主从延迟脏数据缓存(第三方)与数据库数据不一致测试或业务数据不完整并发问题并发请求共享变量被修改异步调用异步调用结果未感知并发修改数据库数据并发修改异常处理异常捕获异常没有被感知异常阻断数据库或服务异常事务问题事务失效存储引擎不支持没有生成代理异步调用事务传递常用REQUIRED事务隔离常用DEFAULT大事务事务中大批量操作数据事务中调用第三方服务配置问题动态配置参数开关开启/未开启状态变更不正确参数类型不正确List类型设置成了String配置文件配置错误线上环境漏配置新配置忘记配置线上环境错配置配置成了了线下环境线程池配置不合理核心线程数最大线程数最大存活时间拒绝策略超时不合理数据库超时缓存超时接口超时限流配置不合理没有触发限流过度触发限流业务模板配置变更通知模板变更业务规则变更存储问题数据库性能慢查询减少数据量分批查询优化SQL大事务减少数据量分批处理避免事务中调用外部服务主从延迟有必要就写主读主连接池超时设置超时时间设置核心线程池数量缓存性能慢查询减少数据量分批查询BigKey避免Key存储大量数据,对性能风险太大主从延迟有必要就写主读主其他缓存淘汰缓存过期缓存穿透缓存雪崩消息队列消息积压Partation均衡扩容节点消息重复客户端保持幂等消息乱序客户端保证幂等消息丢失服务端保证不丢失客户端保证不失败系统设计问题服务问题稳定性差流量过高RT增长、服务异常率高、服务负载高数据量过大存储空间不够、数据库查询慢性能差自身逻辑处理复杂、外部服务依赖性能不稳定容错性差非法请求没容错请求参数异常没有屏蔽造成服务挂掉、或者脏数据数据异常没容错数据兼容没处理对一些异常数据没兼容,导致系统异常业务问题业务流程变更流程兼容问题流程部分变更,历史流程需要兼容历史数据处理问题依赖历史数据,历史数据需要兼容处理业务强卡控问题强卡控上游服务依赖服务不可用或数据未完成需要考虑强卡控某个时间点卡控时间点不可用需要考虑系统常见问题服务问题(监控)流量波动RT波动失败率上升业务问题(监控)业务流量波动业务错误率波动数据问题(监控、探查)一致性问题数据库、缓存、第三方系统数据一致性完整性问题数据库、缓存、第三方系统数据完整性时效性问题缓存更新时效
(图片来源网络,侵删)
0 评论