能从0开始设计一个系统的架构师是幸运的,因为能有机会发挥自己的创造力和影响力,一点一点地把架构搭建起来。但相信大多数程序员,或者说架构师,都没有这个机会,更多的是对现有系统进行优化。
那么怎么才能让系统变得优化呢,这篇文章我们就来聊聊这个话题。
01 观察
没有进行观察就提优化,就是耍流氓。优化的第一步,是收集数据。那么有哪些性能指标,是值得我们关注的呢?
首先,是响应速度。如果用户点了一个按钮,界面就转圈圈转个几分钟,这肯定是不能忍受的。相反,如果响应极快,就没有优化的必要了。
其次,是资源利用率。这里指的是硬件层次的利用率,包括CPU利用率、内存使用率、磁盘IO、网络IO等。有一些量化的指标。
-
CPU的利用率一般在70-80是一个良好的状态。
-
内存利用率通常在80以下是比较好的。
-
磁盘io持续高利用率,说明存储系统可能到了极限。
-
网络一般也是保持在80以下是比较好的。
再者,是错误率。是不是每次请求都能获得有效的回复呢?会有多少次失败?系统在过去一年内出现了几次崩溃,多大比例的时间是稳定运行的?
收集这些数据,进而优化就有了方向。
02 优化
如果没有有效的监控体系,那么首先就要把监控体系建立起来,收集数据。
当确定需要优化,最直接的优化思路可能就是堆硬件。用钞能力解决问题自然是立竿见影的。但一般来说,我们还是要从软件层来处理问题。
我们可能会问自己几个问题。
-
SQL的执行时间是否是最优的,能否通过添加索引来加速?
-
数据的及时性要求有没有那么高,能不能使用缓存代替?
-
单表数量有没有到达瓶颈,需要需要进行表拆分?
-
所有任务都需要同步执行吗,能不能进行异步处理?
-
数据库性能有没有被充分利用,代码能不能使用多线程来处理任务?
或许你还有其他更好的问题,欢迎留言。
03 评估优化结果
当监控体系建立起来之后,评估优化结果就只是对比一下的事情了。但这里还有一点重要的操作,那就是要把结果Show出来。提升做优化同事的价值感。
原文始发于微信公众号(架构师手札):怎么对现有技术架构进行优化?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/234589.html