一次性能测试调优过程记录
Posted 数通畅联
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次性能测试调优过程记录相关的知识,希望对你有一定的参考价值。
近期进行了应用集成项目性能等方面的测试,主要对系统稳定性、并发、部署、负载、高可用、灰度升级测试以及数据大批量的测试,在测试过后发现测试结果不尽如人意,系统的并发以及Redis读写达不到指定的要求,经过排查发现是nginx没有调优导致,在调优后达到了预期效果。
经过以上事件对影响性能等因素进行了排查以及优化,主要对产品的配置、系统、JVM、Redis、Nginx以及数据库方面进行优化,具体优化点以及说明详见下文。
1整体说明
本章主要针对测试的主要内容、测试的ESB应用集成流程具体实现情况以及遇到问题应该如何处理等进行详细的说明。
1.1测试思路
在测试时主要针对1千条、1万条、10万条、100万条、1000万条数据级别进行测试验证,测试分为两个模块,具体如下:
1.对环境进行优化,分别优化主数据及ESB的CPU、内存,并对Redis、JVM、CentOS、Nginx等进行优化;
2.对每个数量级进行ESB层面测试,先用代码构造对应的入参,在使用ESB数据适配器中的数据插入组件记录每个数量级的同步时间;
3.复制原有集成流程,加入主数据调度接口进行数据的同步,记录同步时间,并于数据库批量插入同步时间进行对比,查看是否是因为同步接口降低了同步时效;
4.对测试结果进行总结,将相关问题反馈至产品负责人员进行优化,并进行再次测试。
1.2部署架构
测试环境整体部署架构如下:
本次测试以及性能调优主要针对K8S集群配置下进行测试,对网络层Nginx、Ridis、容器中的产品的JVM等内容进行优化。
1.3测试过程
测试流程主要是针对不同数据量级别对ESB数据插入性能等进行测试,主要测试100W条及1000W条数据的写入测试,具体流程如下:
1.批量处理具体流程如下:
a)初始化操作记录数据起始时间;
b)查询出1千/1万条数据,并进行记录;
c)数据库直接批量数据插入;
d)记录截止时间并进行时间计算。
2.循环批量处理流程如下:
a)初始化操作记录数据起始时间;
b)使用Java转换节点构造1万条数据;
c)数据库直接批量数据插入;
d)索引自增长并进行循环;
e)构造集成日志参数并记录流程执行时间。
1.4调优内容
本次性能调优主要对产品、数据库、Nginx、Redis、CentOS、内存CPU等进行调优,具体调优过程如下。
2产品调优
产品调整过程主要对数据库连接数、日志级别调整、产品缓存调整、线程参数调整、JVM性能调整以及CPU、内存等进行扩充,具体调整如下。
2.1数据库连接数
主要对数据库连接hotweb.properties文件进行调整,调整数据库最大连接数和空闲连接数。
文件位置:/webapps/bpm/WEB-INF/classes
调整样图:
2.2日志级别调整
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。如果设置级别为INFO,则优先级高于等于INFO级别(如:INFO、WARN、ERROR)的日志信息将可以被输出,小于该级别的如DEBUG将不会被输出。
调整日志级别将日志级别debug调整为info,样图如下:
2.3产品缓存调整
在ServiceContext.xml中使用Redis缓存,不要使用本地缓存,注解掉本地缓存,使用redis缓存。
调整文件目录:/webapps/bpm/WEB-INF/classes
2.4线程参数调优
调整server.xml文件,调整线程池,参数说明:
1.maxThreads:最大线程数,大并发请求时,tomcat能创建来处理请求的最大线程数,超过则放入请求队列中进行排队,默认值为200;
2.minSpareThreads:最小空闲线程数,任何情况都会存活的线程数,即便超过了最大空闲时间,也不会被回收,默认值4;
2.5JVM性能调整
调整JVM内存大小,调整内容如下:
文件位置:/bin
具体参数说明:
注意:慎用最小限制选项Xms、PermSize以节约系统资源。
2.6CPU内存调整
调优方面主要使用UMC对主数据、ESB等进行CPU及内存扩充,调整内存为4G—8G,主数据方面:
ESB方面调整同上:
3系统调优
系统调优主要调整sysctl文件,通过调整其内核配置,从而对CentOS进行调优。
3.1参数说明
具体参数说明如下:
3.2其它说明
在上述基础上还可以进行SYN洪水保护、避免放大攻击的设置、增加系统文件描述符限制等其它设置,具体说明如下:
3.3调整过程
对CentOS进行调优,调整sysctl.conf文件。
之后按照上述说明增加如上配置,之后使配置文件生效即可。
4其它调优
主要对Redis、Nginx等进行优化,具体优化过程如下。
4.1Redis调优
通过调整Redis配置文件对Redis进行调优。
添加、修改配置:
需要关闭redis实例节点,重启后生效。
验证方法:
输入“info”命令查看已经改为5G内存,已启用allkeys-lru模式。
4.2Nginx调优
Nginx方面调整使用epoll模式、调整最大连接数、超时时间、请求头缓冲区、请求体缓冲区等等。
4.3数据库调优
服务器优化主要是为了提高服务器本身的性能瓶颈,保证数据库在优化过程中不会因为服务器性能瓶颈影响到数据库的性能调整没有生效,提高数据库的优化空间,因此在数据库优化配置过程中,要根据服务器性能做适当调整,保证在合理范围之内能够生效,提高数据库的效率,数据库优化本次主要调整my.cnf文件。
5心得体会
通过本次的大批量数据同步测试验证使自身在性能调优等方面有了一定的提升,同时也总结了一些心得,现从文档记录、意识形态以及技术积累层面总结如下。
5.1文档记录
在工作学习过程中通过不断地记录文档,可以从多方面提升自身的综合能力。一方面可以感觉得到自己的逻辑思维有了很显著的提升,尤其是在记录教程类的文档时,例如某些系统的使用手册。可以重新梳理一遍系统的技术要点,通过对系统的梳理,过程中可以不断提高自己的逻辑思维能力。一方面在有了清晰的逻辑思路后,对自己的技术能力和水平都有了系统的提升。同时撰写文档也是一个总结、反思的过程,能够帮助个人促进深入思考的能力。
5.2意识形态
通过查阅现有Nginx、Redis等调优的记录文档,发现文档中有一些内容需要优化,伴随着自身专业知识的不断积累,对知识的认知也不断提高。当回过头来看自己之前记录的工作文档,会发现有很多漏点存在,这时就需要再次完善工作文档了。在这个完善的过程中又把初学时的理解和当下做了比较,可以了解到当时的自己有哪些不足,思维逻辑有了怎样的改善。技术、认知在不断地更新,工作文档也在不断地更新,在这个不断迭代更新的过程中,使自己的知识点不知不觉连成了线。
5.3技术积累
本次数据同步验证使自身Linux系统调优方面有了一定的提升,同时也暴露了自己在调配置文件不仔细所产生的问题,不能仅停留于敲代码的层面,在日常的工作过程也是一样,在后续的学习工作过程中要避免此类问题重复发生。
Linux系统作为目前服务器端最常用的系统,学好它的重要性不言而喻,作为一款字符串操作为主流的系统,想要学好Linux其实并不用容易,想要熟练掌握,也需要投入很多的精力,只有不断地学习积累才能使自身知识体系更加完善。
以上是关于一次性能测试调优过程记录的主要内容,如果未能解决你的问题,请参考以下文章