全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

34 | 网站性能优化(上)

扩展阅读
总结思考
寻找性能瓶颈
性能指标与关注点
性能优化与软件设计
性能优化

该思维导图由 AI 生成,仅供参考

你好,我是四火。
从今天开始我们进入“专题”这一章,本章的内容会涉及一些不适合单独归纳到前面任何一章的话题,比如这一讲和下一讲,我们来聊一聊网站的性能优化。
具体说,在这两讲性能专题中,第一讲我将介绍性能优化的基本知识,包括性能优化和软件设计的关系,性能指标和关注点,以及怎样去寻找性能瓶颈,这些是我们需要优先明确、分析和思考的内容,而不是没头没脑地直接跳进问题的坑去“优化”;而第二讲则要讲真正的“优化”了,我将从产品和架构调整,后端和持久层优化,以及前端和网络层优化这样三个方面结合例子来介绍具体的性能优化技术。

性能优化与软件设计

在最开始的部分,我想明确最重要的一件事——也许你已经听说过这句话——“好的性能是设计出来的,而不是优化出来的”。这就像是“高质量的软件是设计出来的,而不是测试出来的”一样,强调的都是软件设计的地位。因此,在设计阶段不考虑性能,而寄希望于在上线前后通过集中式的性能优化突击来将网站性能提高到另一个层次,往往是主次颠倒的。
我来举一个实际的例子说明下这一点吧。
在我参加工作不久后,曾经参与过的一个项目,用户的所有读写操作都要入库,当时的设计是把这样的数据放到关系数据库一个用户行为的表中,以供后续的查阅。上线以后,由于用户量大,操作频繁,很快这张表就变得巨大,读写的性能瓶颈都在这张表上,而且所有用户的操作都受到了影响,因为所有的操作都要写入这张表,在这时我被卷入这个项目,希望尽快解决这个性能问题。说实话,最初设计的时候没有考虑好,而这时候要做小修小改来解决这个功能的性能问题,是比较困难的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了网站性能优化的基本知识和技术,强调了设计阶段就要考虑性能问题。作者通过实际项目例子说明了设计阶段未考虑性能问题所带来的困难和教训。在设计阶段,需要考虑产品设计角度和技术实现角度,以及在项目中后期进行性能优化时需要遵循的三条原则。此外,文章还介绍了性能指标与关注点,包括业务角度和资源角度的性能指标。在业务角度,重点关注延迟、吞吐量、TPS、并发用户数和TP99等指标;而在资源角度,关注CPU占用、内存占用、磁盘I/O和网络I/O等指标。最后,文章强调了寻找性能瓶颈的重要性,指出性能瓶颈并非系统暴露在表面的问题,而是需要深入挖掘和解决的关键问题。整体而言,本文为读者提供了深入了解网站性能优化的基本知识和技术的重要参考资料。文章还介绍了在定位性能瓶颈的过程中使用的工具分类,包括截取型、监控型和验尸型工具。最后,作者提出了问题,引导读者思考如何使用工具或命令来查看在Linux下的资源角度定义的性能指标。文章内容丰富,涵盖了性能优化的基本知识和技术,以及实际操作中的经验分享,对于需要深入了解网站性能优化的读者具有重要参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 💢 星星💢
    CPU 使用率、负载: TOP 可用内存、换页: free 磁盘 I/O:iostat 网络 I/O:sar 应用进程、线程:pidstat ps

    作者回复: 👍

    2020-03-31
    7
  • 四喜
    好想实战

    作者回复: 实战确实能够获得直接的知识,但是实战总是较为具体,不如这些更一般的经验和原则有普适性。因此我们二者都要学。

    2019-11-28
  • leslie
    打卡:这块自己是自己的专长。
    2019-11-27
    7
  • 小寞子。(≥3≤)
    。之前项目 Windows系统 部署的是好几个.net。。 CPU100 ram100。 。没人发现问题。。 直到我们部署的.net出了performance问题,有个API call总是timeout。发现一直都在100。升了ram升了CPU。还是不行。 代码用的是第三方软件的库 背后做什么也没有源码。完全不知道到底做啥。 而且问题只在prod, 测试环境没事。。。最后只能rollback 代码。。 做了对比。. 唯一的代码差距是to date time。。。。 遇到这种问题真是没辙。。
    2020-04-04
    1
  • Paradise丶朽木
    “如果测试阶段还没有做到,那就只好等着上线以后,问题发生来打脸了。” 这个真的是印象深刻...
    2019-11-27
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部