性能测试-性能调优之一
Posted 性能测试之道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能测试-性能调优之一相关的知识,希望对你有一定的参考价值。
》》》推荐阅读《《《
1、
2、
3、
4、
调优过程
在压测时首先要排除的是高消耗 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以上且稳定。
关于日志
切记不必要的日志最好不要条条打印,在并发量大的情况下会明显影响性能的
》》》推荐阅读《《《
1、
2、
3、
4、
6、
7、
8、
9、
10、
11、
12、
13、
14、
15、
16、
17、
18、
19、
20、
22、
23、
24、
25、
26、
27、
28、
以上是关于性能测试-性能调优之一的主要内容,如果未能解决你的问题,请参考以下文章