调整5-Tomcat的启动JVM参数
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左右。
经此调试,看来之前的主要瓶颈还是在数据库上。top后us%平均基本维持在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
之前
相关推荐
- **负载均衡**:将请求分发到多个服务器,防止单点过载。 - **分布式计算**:利用多台机器协同工作,提升整体处理能力。 7. **缓存策略**: - **本地缓存**:在应用层面缓存常用数据,减少数据库访问。 - **...
4. 服务器集群 通过负载均衡策略,比如增加更多的Web服务器,利用缓存技术如Redis减轻数据库压力,同时可以考虑使用Nginx作为反向代理和负载均衡器,进一步提升系统处理能力。5. 无状态设计 尽量让Web层与中间层之间...
- **测试路径**:压力测试机→Web服务器→应用服务器→数据库→挡板。 - **测试环境**:详细说明了测试中使用的资源和工具。 - **测试内容**:针对登录交易和登录+理财交易,分别设置了50和200个虚拟用户进行压力...
- 调整系统架构,如采用负载均衡策略分散压力,避免单点过载。 - 代码优化,减少不必要的计算和内存占用,提高程序运行效率。 - 数据库优化,例如索引调整、查询优化,以提高数据处理速度。 7. **结论** - TWMP...
以上就是关于"JAVA性能测试与调优案例"的一些核心知识点,这些内容可以帮助开发者深入理解如何优化JDK和Tomcat,以提升Java应用的性能和稳定性。实际操作中,应结合具体的应用场景和需求进行有针对性的调优,以实现...
针对Web应用,"Web Stress"是一种常用的系统测试工具,专门用于模拟大量并发用户访问,以测试Web服务器和应用程序的负载承受能力、性能瓶颈以及稳定性。这类工具通过模拟真实世界中的用户行为,对Web服务进行高强度...
- **JMeter**:开源性能测试工具,适合Web应用的压力测试。 - ** Gatling**:轻量级、高性能的负载测试框架,用于Web应用。 在实际测试过程中,还需要关注系统的稳定性、响应时间的分布、错误率等关键指标,以全面...
2. **测试环境**:在实际生产环境之前,在模拟真实负载的测试环境中进行充分的测试,确保各项调优措施的有效性。 3. **版本兼容性**:注意检查所使用的软件版本之间的兼容性问题,避免因版本不匹配而导致的问题。 #...
例如,使用Selenium进行Web界面的功能测试,JMeter进行性能压力测试,AppScan进行安全性扫描。 4. **持续集成与自动化测试**:CI/CD(持续集成/持续部署)流程强调频繁集成和自动化测试,以快速发现并修复问题。...
- 压力测试:模拟超过正常工作负载的情况,观察系统崩溃或性能显著下降的临界点。 - 负载测试:在预期的正常和高峰负载下测试系统性能,确定系统处理能力和稳定性。 - 耐久测试(长事务测试):长时间运行测试,...
- ASP.NET在构建Web应用程序中的作用。 - ADO.NET在数据访问层的应用。 - SOAP和XML Web服务在实现跨系统互操作性中的角色。 - Visual Studio.NET工具套件中的开发技巧。 ##### 4. 第三部分:构建.NET电子商务...
性能测试涵盖的方面包括压力测试、负载测试、并发测试、容量测试、配置测试和基准测试。测试的目的是评估系统能力,识别系统弱点,进行系统调优,以及验证系统的可伸缩性和可靠性。 性能测试指标主要包括响应时间、...
它可以用于Web应用、移动应用等多种类型的测试。 **选择理由**:在实际项目中,我们通常会根据项目的特定需求来选择合适的工具。例如,如果项目预算有限或者需要一个易于上手的工具,则可能倾向于使用JMeter;而...
性能测试的种类繁多,常见的有基准测试(Benchmark测试或Baseline测试)、日常压力测试、峰值压力测试、容量测试和稳定性测试。 1. 基准测试:这是一种基础的性能测试,通常在单用户或者零数据量环境下进行。其目的...
- 提供详细的性能测试方案,包括负载测试、压力测试等。 - 探讨如何优化应用性能,提高响应速度和并发处理能力。 - **第16章:结论——让J2EE为你工作** - 总结全书的核心观点,强调J2EE的价值和未来发展趋势。 ...
- 负载均衡:通过负载均衡设备或技术分散请求,避免单点过载。 - 异步处理:合理使用异步和消息队列技术,提升服务响应能力。 4. 数据库优化: - 选择合适的数据库类型:根据应用场景选择关系型数据库或非关系型...
从单一的线下测试到复杂的线上测试环境,从简单的单点评估到全方位的性能压测,这些变迁既展示了技术的进步,也代表了企业对性能测试的深入理解和重视。未来,随着技术的不断进步和业务场景的日益复杂,性能测试技术...
MVC (Model-View-Controller) 是一种常用的架构模式,在Web应用开发中尤为流行。这部分内容涉及: - MVC模式的基本原理及其在J2EE中的实现。 - 控制器组件的设计思路。 - 视图层的渲染技术和模板引擎的选择。 ####...