`
suhuanzheng7784877
  • 浏览: 702317 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47699
社区版块
存档分类
最新评论

Web应用单点压力测试调优-第4季

阅读更多

 

调整5-Tomcat的启动JVM参数

首先先启动JMX远程端口,修改catalina.sh

JAVA_OPTS="-XX:PermSize=120M -XX:MaxPermSize=120M -Xss265k -Xms430m -Xmx430m -Xmn185m -Xverify:none -XX:MaxTenuringThreshold=50 -XX:+UseFastAccessorMethods -XX:+UseAdaptiveSizePolicy -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.137.233"

 

 

发起1200并发测试,准备时间9s

 

吞吐量和上次测试差不多。

对内存走势如下图

 

 

 

 

 



 

 

总共堆大小是系统的1/4左右,年轻代复制算法清理时间10秒。标记整理则使用了26秒之多。

 

经多次调试(让内存曲线较为稳定),修改JVM参数,catalina.sh文件内容更改如下

 

JAVA_OPTS="-server -XX:PermSize=120M -XX:MaxPermSize=120M -Xss265k -Xms430m -Xmx430m -Xmn80m -Xverify:none -XX:MaxTenuringThreshold=50 -XX:+UseFastAccessorMethods -XX:+UseAdaptiveSizePolicy -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.137.233"

 1200并发,6s准备时间,JMX图形如下

 

 



 其中堆内存图形如下

 



 

避免了FullGC

走势图



 依然有不连续的偏离量,报告如下

 

 

 

 

 

 

 



 

 

系统更多的时间依然是在wa%上花费了不少。(注:此时jmx监控也会吃掉一些系统的性能)

 

 

 

为了突出此问题,将并发量上升到1500,准备时间5s

 

 

 

走势图

 



 吞吐量报表

 



 

 

JVM内存图形表示比较稳定,在此不列出图形。

 

瓶颈基本锁定在Mysql数据库。

 

 

 

调整6-修改Mysql配置参数

 

my.cnf修改配置如下

 

[client]
port		= 3306
socket		= /tmp/mysql.sock

[mysqld]

port		= 3306
socket		= /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
myisam_sort_buffer_size = 8M
log-bin=mysql-bin
binlog_format=mixed

server-id	= 1

#update start
max_connections=1500
query_cache_size=32M
default-storage-engine=INNODB
#table_cache=256
tmp_table_size=8M
thread_cache_size=8
read_buffer_size=64K
read_rnd_buffer_size = 256K
net_buffer_length = 16K
table_open_cache = 256
sort_buffer_size = 512K
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=8M
innodb_buffer_pool_size=32M
innodb_log_file_size=128M
innodb_thread_concurrency=1
#update over

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

 

 

1500并发,准备时间5s

 

JMX远程监控图形如下



 

 

压力测试走势图



 报表

 

 

 



 

TPS基本维持在30左右。

 

经此调试,看来之前的主要瓶颈还是在数据库上。topus%平均基本维持在70%~80%,而wa%基本维持在25%~40%之间。

 

调整7-不引入第三方工具软件情况下的优化

修改相关程序和配置清单(后续会将完整优化文件内容附上)

 

程序:调整逻辑-循环跳跃,由i++变为i=i+2,减少循环次数
数据库配置:优化连接池和一些buffer
程序连接池增大
修改JDBC连接参数,优化URL链接选项
继续修改并优化JVM参数
修改tomcat连接器参数
给主表外键简历normal的btree索引
关闭图形启动界面

 

 

经过多伦调优,此次是1500并发,连续加压6次,准备时间是23s



 6次走势图如下



 吞吐量报告,稳定后TPS基本维持在36~40



 

(未完待续)

 

标记:18页

各项配置:

 

my.cnf

之前

 

  • 大小: 38 KB
  • 大小: 36.5 KB
  • 大小: 30.9 KB
  • 大小: 20.2 KB
  • 大小: 10 KB
  • 大小: 18.9 KB
  • 大小: 9.8 KB
  • 大小: 38.5 KB
  • 大小: 18.5 KB
  • 大小: 10 KB
  • 大小: 21.1 KB
  • 大小: 25 KB
  • 大小: 9.7 KB
分享到:
评论

相关推荐

    性能测试调优分析.rar

    - **负载均衡**:将请求分发到多个服务器,防止单点过载。 - **分布式计算**:利用多台机器协同工作,提升整体处理能力。 7. **缓存策略**: - **本地缓存**:在应用层面缓存常用数据,减少数据库访问。 - **...

    大型Java Web项目的架构和部署调优问题.doc

    4. 服务器集群 通过负载均衡策略,比如增加更多的Web服务器,利用缓存技术如Redis减轻数据库压力,同时可以考虑使用Nginx作为反向代理和负载均衡器,进一步提升系统处理能力。5. 无状态设计 尽量让Web层与中间层之间...

    系统调优性能测试报告.docx

    - **测试路径**:压力测试机→Web服务器→应用服务器→数据库→挡板。 - **测试环境**:详细说明了测试中使用的资源和工具。 - **测试内容**:针对登录交易和登录+理财交易,分别设置了50和200个虚拟用户进行压力...

    TWMP系统压力测试报告

    - 调整系统架构,如采用负载均衡策略分散压力,避免单点过载。 - 代码优化,减少不必要的计算和内存占用,提高程序运行效率。 - 数据库优化,例如索引调整、查询优化,以提高数据处理速度。 7. **结论** - TWMP...

    JAVA性能测试与调优案例

    以上就是关于"JAVA性能测试与调优案例"的一些核心知识点,这些内容可以帮助开发者深入理解如何优化JDK和Tomcat,以提升Java应用的性能和稳定性。实际操作中,应结合具体的应用场景和需求进行有针对性的调优,以实现...

    系统测试工具 web stress

    针对Web应用,"Web Stress"是一种常用的系统测试工具,专门用于模拟大量并发用户访问,以测试Web服务器和应用程序的负载承受能力、性能瓶颈以及稳定性。这类工具通过模拟真实世界中的用户行为,对Web服务进行高强度...

    [17个软件测试文档]-8性能测试经验总结

    - **JMeter**:开源性能测试工具,适合Web应用的压力测试。 - ** Gatling**:轻量级、高性能的负载测试框架,用于Web应用。 在实际测试过程中,还需要关注系统的稳定性、响应时间的分布、错误率等关键指标,以全面...

    Websphere portal tuning调优

    2. **测试环境**:在实际生产环境之前,在模拟真实负载的测试环境中进行充分的测试,确保各项调优措施的有效性。 3. **版本兼容性**:注意检查所使用的软件版本之间的兼容性问题,避免因版本不匹配而导致的问题。 #...

    J2EE企业级应用测试实践

    例如,使用Selenium进行Web界面的功能测试,JMeter进行性能压力测试,AppScan进行安全性扫描。 4. **持续集成与自动化测试**:CI/CD(持续集成/持续部署)流程强调频繁集成和自动化测试,以快速发现并修复问题。...

    性能测试基本概念剖析

    - 压力测试:模拟超过正常工作负载的情况,观察系统崩溃或性能显著下降的临界点。 - 负载测试:在预期的正常和高峰负载下测试系统性能,确定系统处理能力和稳定性。 - 耐久测试(长事务测试):长时间运行测试,...

    .NET E-BUSINESS ARCHITECTURE (电子商务结构)

    - ASP.NET在构建Web应用程序中的作用。 - ADO.NET在数据访问层的应用。 - SOAP和XML Web服务在实现跨系统互操作性中的角色。 - Visual Studio.NET工具套件中的开发技巧。 ##### 4. 第三部分:构建.NET电子商务...

    loadrunner性能测试介绍

    性能测试涵盖的方面包括压力测试、负载测试、并发测试、容量测试、配置测试和基准测试。测试的目的是评估系统能力,识别系统弱点,进行系统调优,以及验证系统的可伸缩性和可靠性。 性能测试指标主要包括响应时间、...

    性能安全测试面试题100%这样问

    它可以用于Web应用、移动应用等多种类型的测试。 **选择理由**:在实际项目中,我们通常会根据项目的特定需求来选择合适的工具。例如,如果项目预算有限或者需要一个易于上手的工具,则可能倾向于使用JMeter;而...

    性能测试种类_转载网友

    性能测试的种类繁多,常见的有基准测试(Benchmark测试或Baseline测试)、日常压力测试、峰值压力测试、容量测试和稳定性测试。 1. 基准测试:这是一种基础的性能测试,通常在单用户或者零数据量环境下进行。其目的...

    Expert One-on-One J2EE Design and Development

    - 提供详细的性能测试方案,包括负载测试、压力测试等。 - 探讨如何优化应用性能,提高响应速度和并发处理能力。 - **第16章:结论——让J2EE为你工作** - 总结全书的核心观点,强调J2EE的价值和未来发展趋势。 ...

    构建高性能web站点

    - 负载均衡:通过负载均衡设备或技术分散请求,避免单点过载。 - 异步处理:合理使用异步和消息队列技术,提升服务响应能力。 4. 数据库优化: - 选择合适的数据库类型:根据应用场景选择关系型数据库或非关系型...

    京东测试技术变迁

    从单一的线下测试到复杂的线上测试环境,从简单的单点评估到全方位的性能压测,这些变迁既展示了技术的进步,也代表了企业对性能测试的深入理解和重视。未来,随着技术的不断进步和业务场景的日益复杂,性能测试技术...

    Wrox.Expert.One-On-One.J2EE.Design.And.Development

    MVC (Model-View-Controller) 是一种常用的架构模式,在Web应用开发中尤为流行。这部分内容涉及: - MVC模式的基本原理及其在J2EE中的实现。 - 控制器组件的设计思路。 - 视图层的渲染技术和模板引擎的选择。 ####...

Global site tag (gtag.js) - Google Analytics