性能测试记录: ZZ 只改5行代码获得10倍吞吐量提升

首先得找台足够性能的机器来测试,性能不足时代码运行会出现各种奇怪的现象,导致浪费时间

 

文章: https://www.jianshu.com/p/4cd8596352ad   只改了5行代码吞吐量提升10倍多

 

SQL 改为异步执行   提升2倍

中间一通折腾,效果不佳

观察到CPU使用率仍然较高,在砍掉大量线程后,   代码慢?转向 CPU高?

打印堆栈(JAVA)发现大量的 getBean->createBean的情况, 找到最终点: 调用redis时会重复创建新的 jedis实例, 每秒会进行10次createBean

改为New

排查涉及的命令如下:

查询服务进程CPU情况: top –Hp pid

查询JVM GC相关参数:jstat -gc pid 2000 (对 pid [进程号] 每隔 2s 输出一次日志)

打印当前堆栈信息: jstack -l pid >> stack.log


结果是好的,过程是曲折的。总的来说还是知识的欠缺,文章看起来还算顺畅,但都是事后诸葛亮,不对,应该是时候臭皮匠。基本都是边查资料边分析边操作,前后花费了4天时间,尝试了很多。

Mysql : Buffer Pool 、Change Buffer 、Redo Log 大小、双一配置...
代码 : 异步执行,线程池参数调整,tomcat 配置,Druid连接池配置...
JVM : 内存大小,分配,垃圾收集器都想换...
总归一通瞎搞,能想到的都试试。

后续还需要多了解一些性能优化知识,至少要做到排查思路清晰,不瞎搞。

最后5行代码有哪些:

new Redis实例:1
耗时统计:3
SQL异步执行 @Async: 1(上图最终的结果是包含该部分的,时间原因未对SQL进行处理,后续会考虑Redis原子操作+定时同步数据库方式来进行,避免同时操数据库)

 

posted on 2023-02-14 15:05  js.yeyong  阅读(39)  评论(0编辑  收藏  举报

导航