一次性能测试调优总结

作者: 测试帮日记 | 来源:发表于2018-11-29 09:21 被阅读22次

点击链接加入QQ群 522720170(免费公开课、视频应有尽有):https://jq.qq.com/?_wv=1027&k=5C08ATe

调优过程

在压测时首先要排除的是高消耗 SQL(经过 AWR 报告分析后 HSC没有出现高消耗 SQL)本次 SZ割接压测经过以下几个关键点的调优:

1) 脚本参数调优 (数据已存在,字段值太长错误较多调节脚本参数模式及参数长度)

2) JDBC配置调优 (JDBC使用率 100%,连接数调成 100 后,极限测试时使用在 80 个连接左右)

3) WAS配置调优 (主要是 webcontainer 调成 200,极限测试时使用达到 200,但主机CPU资源消耗在 50%以上,且 TPS也超过指标 10 来倍,不再增加配置)

4) IHS配置调优 (主要是 http.conf 文件参数调整)

5) linux 系统调优 (主要是网络参数调整,及 open file 调整)

6) Systemout 日志中不打印应用日志(减少不必要的磁盘 IO 消耗)。

下面逐一分解每个关键调优时出现的问题及定位

JDBC连接数配置调优

在压测过程中一直发现TPS上不去,并随着测试时间的加长,间断性出现超时现象。通过对主机资源的 CPU, 内存,IO分析没有存在性能瓶颈,并同时对网络传输苏苏进行测试发现也没有任何瓶颈。通过对监控控制台观察到,JDBC: waitingTreadCount (等待连接数)达到 80 多个。同时 JDBC:Poolsize一直保存在 10。诊断为 JDBC连接数过小导致。

检查每 WAS server的连接数后, 发现最大是 10,立马把每个 server 的 JDBC最大连接改成了 100 ,最小连接数改为10,并同步集群, 清除场景跑出的压测数据后 (还原数据库环境) ,再次进行调测,TPS保持在 200 笔左右, 且相对较为平稳, 此时性能值已经符合上线要求

WAS 配置调优

经过上面 JDBC的调节, 性能已经达到了上线的要求, 但经过分析主机资源消耗较小,为了使用主机资源合理利用,或达到性能极限值,加大并发进行测试,在测试过程中出现有 http404错误。由此联想到 WAS server配置是否不合理。通过压测过程中查看server 的 Webcontainner连接数使用一直都是98-100,看来webContrainner也是性能瓶颈。

通过access_log可以看出来确实有404,没有找到这些文件,原因是当前的配置为转发到4个WAS server,而这4个server都在满负荷工作,导致有些请求无法处理而出现404.解决方法也很简单,增加was server的webcontainner数量,将最小连接数从1改为25,最大连接数从100改为200,之后回归测试看效果。

结果令人兴奋: TPS最高值已经可以达到 800 以上了, 404 错误消失,但我们可以看到波动还是很大, 随着场景的运行 TPS下到只有 400 多,有性能风险, 说不定哪天就停止响应了

IHS 配置调优

在加压的测试过程中(接上)出现 TPS达到较高值后,又迅速下降的情况,且响应时间有上升趋势,存在性能风险。经过查看 IHS(error_log )日志发现有堆积。通过与IBM专家交流建议调整参数,最终调整为

调整 IHS配置后 ,并重启 IHS压测执行 5 分钟后 ,TPS达到 1200,随后下降到 1000 保持稳定。但新的问题出现了:

Error -108977:Action.c(6) Error Failed to connect to server "10.252.17.2186" [10048] Address

already in use

Try changing the registry value

HKEY_LOCAL_MACHINESystemCurrentControlSetServicestcpipParametersTcpTimedWaitDel

ay to 30

and HKEY_LOCAL_MACHINESyst0  68

linux 系统调优

出现上述问题根据经验一般都是压测客户端的问题,解决方法无非是修改注册表,增加压测机器,但是。。。。。居然都没用。这时候突然想到看看tcp连接的情况,结果发现有大量的timewait,大概有1000个以上,吓得赶紧去调整linux内核参数了。修改/etc/sysctl.conf

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

net.ipv4.tcp_keepalive_time=300

net.ipv4.tcp_keepalive_probless=55

net.ipv4.tcp_keepalive_intvl=22

使用端口范围改为ip_local_port_range 9000到65500,别忘了修改完要/sbin/sysctl让生效啊

经过上述调优,TPS达到1300以上且稳定。

关于日志

切记不必要的日志最好不要条条打印,在并发量大的情况下会明显影响性能的

相关文章

  • JVM与性能调优

    性能测试 在了解性能调优之前,首先得知道什么是性能测试,我们的程序怎样的性能表现才需要进行性能调优 一、性能测试概...

  • MySQL部分参数调优

    调优参数详情 性能测试脚本实例

  • 用户画像5:开发性能及作业调度

    本章主要总结开发性能调优及作业调度相关的产品知识,性能调优主要是减少性能消耗和提高ETL作业时间,常见的调优就会数...

  • Jmeter测试移动接口性能--性能调优

    前面写了性能测试如何执行并得到测试报告。现在要开始最重要的一步了。性能调优。 说句实话,性能调优这块我并没有太多的...

  • 一次性能测试调优总结

    点击链接加入QQ群 522720170(免费公开课、视频应有尽有):https://jq.qq.com/?_wv=...

  • iOS性能调优总结

    iOS性能调优总结 1. 性能调优工具: 1.1 静态分析工具Analyze 相信IOS开发者在App进行Buil...

  • dubbo性能优化和总结

    性能调优相关参数 常用的性能调优参数 总结 dubbo提供什么功能 1 服务远程通信:默认通过netty来完成通信...

  • 性能测试流程与调优

    性能测试流程与调优 概述 分析性能需求 制定性能测试计划 设计场景 编写脚本和程序初始化配置 执行性能测试 分析结...

  • 腾讯优测总结性能测试优调步骤

    腾讯优测总结性能测试优调步骤 1、确定问题 应用程序代码:在通常情况下,很多程序的性能问题都是写出来的,因此对于发...

  • 性能优化总结

    这是2018年10月自己做的一个项目性能调优,这是事后回顾,做得一份总结 总结:性能调优 解决流程参考 数据库优化...

网友评论

    本文标题:一次性能测试调优总结

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