摘要:前言系统优化是一个系统工程需要长期监控长期及时解决的事情。主要从两个方面来讨论新系统上线前需要做些什么老系统优化有哪些途径新系统系统在设计时要考虑系统最大的等指标系统整个至少能支持业务最高峰来设计系统。
前言
系统优化是一个系统工程, 需要长期监控长期及时解决的事情。我一直在开发的一线,积累了一些经验,开这个专栏。欢迎大家一起讨论,互相学习及进步。
主要从两个方面来讨论
新系统上线前需要做些什么
老系统优化有哪些途径
新系统系统在设计时要考虑系统最大的qps,tps等指标,系统整个至少能支持业务最高峰*2来设计系统。是不是系统支持越高指标越好呢,单纯来讲的确最好, 但"世界没有免费的晚餐",系统要支持更高的并发处理能力,除了代码层面的优化,架构层面还需要引入公共设施比如缓存,消息系统等,引入更多的设施带来的风险就会增加,不符合系统"简单可依赖"的原则。
老系统俗话说: 找到问题所在,就解决了一半的问题。系统越来越慢有哪些原因, 怎么能找到原因呢,列举一下我之前碰到过几类场景。
系统依赖的外部接口反应慢,而本系统http没有用连接池,导致系统大量http请求hang住。机器CPU飙高,应用服务器tomcat无法执行新的请求大量拒绝服务。
系统上线导致不怎么优化的sql上线, 有比较多的慢sql导致数据库响应变慢导致系统整体变慢
数据库某些表的数据增长快,达到几千万条级别时出现系统变慢,由数据量增大导致的慢查询
系统输出日志量太大没有及时切分,导致系统IO过大,CPU过载
代码中对于线程使用不太合理,导致大部分线程处理等待状态,线程切换耗费太长时间
代码中存在资源互相锁的情况,这里资源主要IO及网络资源,还有队列资源等导致无法高效的并行处理。
这里有两个讨论为了提高效率,什么时候值得引入缓存,引入缓存会有什么问题?
你碰到过什么问题导致线上服务变慢,如何找到原因的,如何解决的呢?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/62018.html
摘要:几个死锁场景两个线程相互调用导致互相等待同步结束。线程为了检测死锁,它需要递进地检测所有被请求的锁。思考题线程有哪些状态这些线程大多处于什么样的状态分布我们可以称系统运行是健康的。 前言 在上一期Tomcat优化中,针对JVM相关主要参数做过一定说明,这一期主要介绍进行一些概念及经验。后面分章节去讲述相关工具的基本使用。 优化优先级 整体来讲,系统优化应先优化架构及代码,来解决具体功能...
摘要:技术的量化提升技术氛围,打造工程师文化不能仅停留在口头上,可搭配一定的强制手段,比如和技术人员的利益绑定。但是作为一个重要参考和风向标,技术是有积极意义的。 为什么需要技术KPI? 在业务技术团队,有一个不好的趋势就是团队越来越业务,越来越没有技术味道。每个人都在谈业务,技术大会上在谈业务,周会上在聊业务,周报里写的是业务项目...... 唯独少被谈及的是技术本身。此处并不是说业务不重...
摘要:在版本中,支持五种序列化方式,分别是依赖阿里的库,功能强大支持普通类包括任意或完全兼容序列化协议的系列化框架,序列化速度大概是的倍,大小是大小的左右。但这里实际不是原生的序列化,而是阿里修改过的,它是默认启用的序列化方式自带的序列化实现。 序列化——开篇 目标:介绍dubbo中序列化的内容,对dubbo中支持的序列化方式做对比,介绍dubbo-serialization-api下的源码...
阅读 2553·2021-10-14 09:43
阅读 3516·2021-10-13 09:39
阅读 3232·2019-08-30 15:44
阅读 3094·2019-08-29 16:37
阅读 3669·2019-08-29 13:17
阅读 2699·2019-08-26 13:57
阅读 1790·2019-08-26 11:59
阅读 1180·2019-08-26 11:46