美文网首页
微服务性能优化

微服务性能优化

作者: 多与少 | 来源:发表于2020-09-07 17:31 被阅读0次

    目录

    一、优化思路

    二、优化方向

    三、优化实战

    (一)服务背景

    (二)优化方向


    一、优化思路

    • 清楚性能基线

    只有清楚了服务当前的性能基线,才能更好的制定优化计划以及优化目标。不清楚性能基线的话,很难知道优化的效果,更无法清晰距离目标还有多远。

    • 确定优化目标

    有目标的做事,才能更好的做事。有目标,才会清晰方向。往往一个项目有太多需要优化的地方,而有了目标,才能更好的分清优化点的优先级,而对时间才能做到更好的把控。那如何更好的达成目标,减少走弯路呢?需要我们走好优化测试闭环。

    • 优化测试闭环

    服务性能优化是一个长期的工作,优化目标不是一两天就能达到的,而我们需要对自己的优化效果做到清晰准确。需要准备稳定的性能测试环境,在保证输入相同的情况下,我们需要看到优化的效果。在此环节最好了解服务的输入、资源的配置,做到小步优化,小步测试,可以更好的减少走弯路。那如何更好的做好优化测试闭环呢?需要我们能快速看到服务整体以及各环节的统计度量数据。

    • 统计度量数据

    做好服务的统计度量工作,就可以每天都出一份性能测试报告,让工作更加数据化。而如何做好统计度量呢?可能会有很多做好,例如借助监控软件,而我们采取的是日志分类,通过日志然后去计算各环节所用的时间。这里需要结合具体的服务去决定如何去做。而做好统计度量,还有一个很重要的作用,我们可以快速的寻找到优化点。

    • 寻找性能拐点

    根据统计度量数据,找到性能的拐点,逐步优化,以达到初始性能优化目标。

    二、优化方向

    一般情况下基于时间维度和空间维度两个方向考虑服务的性能优化。从时间维度来看可以从内存的使用、缓存的构建、IO的交互、代码的编译、数据的解析等多个角度考虑,从空间维度来看可以从缓存结构、数据结构、类的继承等多个角度考虑。

    三、优化实战

    (一)服务背景

    该服务是基于PaaS平台部署的分布式服务,服务本身是基于Jstorm Topology开发的流式数据清洗服务。

    (二)优化方向

    • Bolt之间的分发,由随机分发改为优先本地分发,网络IO优化。(最大的性能拐点)

    • 正则表达式的预编译,代码编译优化。

    • 构建FTP Client的链接池。

    • 模型标签的优化。

    • 缓存构建的优化。

    • 写文件的优化,文件IO优化。

    • Topology的优化。

    • 字符串的拷贝优化。

    • 数据结构容量的初始化优化。

    • 文件操作Buffer的大小优化。

    • 数据源读取Kafka消息的优化。

    • 文件解析的优化,将文件从NFS挪至Node本地。

    • 增加内存盘,减少IO。

    相关文章

      网友评论

          本文标题:微服务性能优化

          本文链接:https://www.haomeiwen.com/subject/fkelektx.html