程序性能优化——接口性能优化总结和思考

程序性能优化——接口性能优化总结和思考

码农世界 2024-06-18 后端 85 次浏览 0个评论

程序性能优化——接口性能优化总结和思考

  • 一、背景介绍
  • 二、 思路方案
  • 三、过程
  • 四、总结
  • 五、升华

    一、背景介绍

    接口的优化

    排查到的问题:循环中查询数据库,4300次查询数据库总共耗时在4分钟左右。

    优化结果:4分钟到2秒

    二、 思路方案

    宏观的整体优化方向:内存、网络(带宽)、cpu

    三、过程

    此次的优化方向:

    1. 减少从数据库传输到程序中的数据量。由800条减少到一条。对带宽的占用减少了,传输速度会更快。
    2. 另一方面,对sql语句进行了优化(站在业务的角度只返回一条数据),单次查询由0.025s,优化到 0.001s。(目前看到的现象是由于返回的数据只有一条,效率会更高)。
    3. 使用多线程进行查询,使用多核cpu的优势,由于此处为IO型,所以最大线程数量选用的是2N(N为cpu核心数)
    4. 由于每次查询都会开启一个线程池,频繁的开启和销毁线程池对于性能也有不小的损耗,所以此处进行线程池启用的设定,当查询的数据在1000条以下后端实际处理数据量(小于10w)不启用线程池,当查询的数据超过1000(实际处理数据量在10w+)时启用线程池。

      优化内容:sql优化,添加多线程。

    四、总结

    不足之处:

    1. 此处使用多线程感觉上有些浪费,是否有必要使用到线程池?
    2. 没有接口循环查询数据库的问题,原因是对于当前业务场景下的oracle的批量查询语句,较为复杂。所以暂时没有从批量查询进行优化。

      如果后期进行批量查询,估计可以将线程池给替换掉。

    五、升华

    必须站在宏观的角度上从内存、网络、cpu等方面进行优化。

    而不是遇到需要性能优化的点,就从sql语句、多线程等方面进行优化。

    需要知其然知其所以然,然后平衡求出当前的最优解。

转载请注明来自码农世界,本文标题:《程序性能优化——接口性能优化总结和思考》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,85人围观)参与讨论

还没有评论,来说两句吧...

Top