程序简述:
一个客户端程序从rocketmq中读取消息通过rpc调用方式发送给服务端,并异步获取服务端应答,根据metric统计应答tps计算总体性能。
服务端为分布式系统,由多个环节组成的拓扑结构,可指定进程数和各个环节的线程数。运行在6台主机上。调优前tps4000,接到任务需要目标tps1万6.
调优步骤:
1、业务调优:将不必要的业务规则匹配配置删除。将sql静态数据在程序启动时加载到内存,而不是每次都查询。
2、日志调优:将logback日志配置文件修改为异步方式(提高较大),日志拼接由+改为{}
3、zk配置调优:调优前程序只访问程序配置只访问了zk集群中的一台机器,日志发现有lose connnection错误,修改为访问集群中所有机器,问题解决
4、数据库连接池调优:jstack发现有很多卡在getconnnection的线程,判定是连接池数量不够,根据单进程并发,调整出合理数据库连接池大小,以及maxactive、maxidle等配比。
5、客户端:到后期发现由于客户端发送tps跟不上,因此调整了从rocketmq读取数据的线程数,发送线程数等配置。
6、SQL优化
7、代码优化:删除冗余,部分卡顿代码优化等
调优后tps达到2万