高楼的性能工程实战课
高楼
盾山科技 CEO,7DGroup 创始人
19172 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 35 讲
特别放送 (1讲)
结课测试 (1讲)
结束语 (1讲)
高楼的性能工程实战课
15
15
1.0x
00:00/00:00
登录|注册

12 | 打开首页之二:如何平衡利用硬件资源?

你好,我是高楼。
针对打开首页接口的性能问题,我们在上节课中确定了是 Gateway 在消耗响应时间,达到了近 100 毫秒。于是,我们开始定位 Gateway 上的响应时间消耗。
在第一阶段的时候,我们关注了应用所在的主机,同时还了解到,宿主机总共有四台机器;在第二阶段,我们查看了物理机的 CPU 模式。并尝试通过修改 CPU 运行模式来优化性能。可是,问题仍然没有解决,TPS 没见提升,响应时间依旧很长。
今天这节课,我们进入第三阶段,继续分析其他的瓶颈点,比如 wa cpu、资源均衡使用、网络带宽等问题。其中,在性能的分析逻辑里,资源均衡使用是一个非常容易被忽略,但又极为重要的方面。我们通常都盯着计数器给出的数值有什么异常,而不是考虑资源怎么做相应的调配。
在我们这个案例中,系统是用 k8s 来管理资源的,所以我们必须要关注资源的均衡使用,避免出现有些服务性能很差,却和性能好的服务分配同样资源的情况。另外,网络资源在 k8s 中会跨越好几层,我们也要着重关注一下。
在学习这节课时,我建议你多思考下资源的均衡使用问题。现在,我们就开始今天的课程。

定位 gateway 上的响应时间消耗

第三阶段:NFS 服务器的 wa cpu 偏高

根据分析的逻辑,我们仍然是先看全局监控数据,思路依旧是“全局 - 定向”,这是我一贯的顺序了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了通过平衡硬件资源来解决打开首页接口的性能问题。作者首先定位了Gateway在消耗响应时间,经过多阶段的分析和优化尝试后,问题仍未解决。文章重点讲解了资源均衡使用在性能分析中的重要性,特别是在使用k8s管理资源的系统中。通过对NFS服务器的wa cpu偏高进行分析,文章展示了如何通过iostat和xfs_info等命令来查看IO状态和Block Size,以及通过iotop命令查看NFS的流量来源。作者提出了移动MySQL的数据文件和Log的尝试,但结果并未改善。总的来说,本文强调了在解决性能问题时,需要关注资源的均衡使用,以及在k8s系统中管理资源的重要性。文章通过详细的分析和优化过程,为读者提供了解决类似性能问题的思路和方法。文章强调了性能分析的重要性,以及在解决问题时需要清晰定义优化的方向和目标。最后,作者留下了三个思考题,鼓励读者在留言区讨论交流想法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《高楼的性能工程实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • 微思
    优化过程很过瘾,希望老师能把实战课的案例部署文档整一个分享一下,也让我们本地能弄一个差不多一样的环境跟着课程实操一把,那就更过瘾啦!!!

    作者回复: 正在写部署文档,打算加餐中放。还在验证文档中。

    2021-04-17
    4
    10
  • 微思
    1、当 st cpu 高的时候,你要去看什么? -- 看宿主机的CPU运行模式 2、当 wa cpu 高的时候,你要去看什么? -- cat /proc/interrupts cat /proc/softirqs 找到对应的模块和模块的运行原理,最后找出解决方案 3、为什么我们要把硬件资源用完? -- 目的是为了找到系统容量的上限 ================================== 最后请教老师一个问题,文章中,当优化到TPS 已经达到 1000 左右了的时候,图片中的响应时间曲线中有两处非常扎眼的突刺,对这两处突刺老师怎么看?会是什么原因引起的呢?

    作者回复: 一般毛刺不多,只要对整体趋势影响不大,我不会特意去分析。 在这个示例中,我没有分析,不知道是什么原因引起的。 如果想分析这样的毛刺也简单,思路一样。 请注意,不要看到现象直接问原因,不分析是不可能知道原因的。

    2021-04-17
    6
  • 门窗小二
    老师可以把从哪个参数看出是顺序写,就像@同心飞翔说的那样为啥不用第一行io的数据19968而用第二行的数据43056;还有一点希望在图片标示出来接下来要分析使用到的数据

    作者回复: 因为数据是用代码的形式放在课程中的,所以无法加上不同的颜色标示。也许编辑小姑娘能有招吧。 在下面的计算过程中,我不是写了计算公式吗?如果一次写了多个block就显然是顺序写了;如果一次只写一个block就显然是随机写了。

    2021-04-22
    3
  • Geek_a55bf0
    老师,从上一节分析gateway是怎么过度到分析nfs的呢

    作者回复: 从全局监控的计数器里一个个看过去的。在性能分析决策树中罗列的计数器一个个查过去。

    2021-06-20
    2
  • sierlu
    1.st高要去看宿主机上其他虚拟机的资源使用,以及宿主机的资源使用 2.wa高需要去iostat看下io的延时,使用率,读写速率达到多少,如果确实io读写很高iotop看下占用io高的进程 3.硬件资源使用完,能知道应用的容量在该配置下能达到多少,也更容易发现下一个短板在哪里。 提问: 案例中说到一些监控探针影响到应用的性能,我们在测试时该怎么取舍呢?高老师是否做过实验课程中推荐的几款监控工具对i性能的影响?

    作者回复: 像skywaling之类探针APM工具,都对性能就有影响。通常我都会设置较低的采样率。 探针工具没什么可推荐的。我觉得skywalking还是不错的。有精力自己写也是一样的。

    2021-06-15
    2
  • Technological life
    “可以看到,IO 都是 NFS 写过来的。那 NFS 的流量又是从哪里来的呢?从下面的数据来看,这些流量是从各个挂载了 NFS 盘的机器写过来的,这是我们一开始部署应用的时候,考虑统一使用 NFS 来做 IO 的思路。因为这个机器挂载了一个大容量的磁盘,为了保证磁盘够用,就把多个主机挂载了 NFS 盘。“” 这段话下面的那数据是通过什么命令来把它展示出来的呢?

    作者回复: iftop就可以。

    2021-05-19
    2
  • Geek_bbe4c8
    “在网络中当小包过多的时候,网络带宽是难以达到线性流量的。” 老师,这里的线性流量怎么理解?

    作者回复: 简单来说,就是假设一个包是1M,那总带宽是100M的话,需要100个包就行。 如果一个包只有10bit,那就不可能用完100M的总带宽。

    2021-04-17
    2
  • 同心飞翔
    老师,计算次数哪里为啥使用的43056而不是上面util100%对应的写19968?这里没看懂 另外,网络使用情况那个图,使用什么命令看的?谢谢

    作者回复: 这里要用字节数来算,不能用使用率来算。 网络的是iftop命令。

    2021-04-16
    2
  • Geek_9d9f66
    高老师,上面分析每个线程一段时间处于Running/Runnable的图片是用的什么工具啊

    作者回复: springboot admin

    2022-02-20
    1
  • 一只胖虎
    为了让压力能直接压到一个节点上,我们跳过 Ingress,用分段的测法直接把压力发到服务上。 高老师,请问分段的测法具体是怎么操作和配置的呢

    作者回复: 就是改一下压力脚本中的IP地址就可以了。 先拿一个架构图,把一段的入口IP标识出来,就可以知道是从哪里压进去的了。

    2022-02-17
    1
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部