调整2-调整配置,数据库连接池数量
mysql默认最大连接数是100
关闭程序和mysqld
修改mysql配置文件/etc/my.cnf
在[mysqld]下增加
max_connections=400 |
修改项目中jdbc.c3p0.properties配置文件,将127.0.0.1改成localhost,不受网卡限制.mysql对localhost也做了相应的处理措施-(http://wenku.baidu.com/link?url=Ju_Ap7u8hOkPSPXgAWAGMnyWN7JwBeU4HUOvWma-OnOCYD89LpJkCmZWXKJmnfgKkq_gW38U83wXGQOxFYbKAEmiayClqSilX3KZxDFVGZq)
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/story?useUnicode=true&characterEncoding=UTF-8 jdbc.miniPoolSize=100 jdbc.maxPoolSize=380 jdbc.initialPoolSize=100 jdbc.maxIdleTime = 120000 jdbc.acquireIncrement=20 jdbc.acquireRetryAttempts = 45 jdbc.acquireRetryDelay=120000 jdbc.testConnectionOnCheckin = true jdbc.automaticTestTable = test jdbc.idleConnectionTestPeriod = 30000 jdbc.checkoutTimeout=65000
先行发起1200并发尝试,成功率,略有好转
走势图
吞吐量报告
将参数略加修改,再次尝试
my.cnf
max_connections=600
程序连接池
jdbc.miniPoolSize=200 jdbc.maxPoolSize=580 jdbc.initialPoolSize=200 jdbc.maxIdleTime = 120000 jdbc.acquireIncrement=38 jdbc.acquireRetryAttempts = 50
预热后,压1200并发
走势图
报告
虽然吞吐量上升了,但是错误率也在上升。Top查看,看多时候操作系统在wait消耗比重比较大。
调整3-日志的输出配置
使用iostat工具查看io负载率
iostat -x -d 3
再压,发现iostat的util%占用率较高。
将项目日志级别配置文件调整
## LOGGERS ## #define a logger #log4j.rootLogger=DEBUG,console,file log4j.rootLogger=ERROR,console,file log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=../logs/story_log.log log4j.appender.file.MaxFileSize=1504800KB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.BufferedIO=true log4j.appender.A3.BufferSize=100960
1200并发测试,iostat探测结果,util%虽然有所下降,可是压力结果并未改善,看来不是写日志造成的IO瓶颈。异常反映出依然是http连接超时
继续调大mysql的连接池数量,使其到达1500。调整程序的连接池,使其到达1200,(剩余的连接用于mysql监控workbench使用)。
创建的池对象(数据库线程池、程序连接池)差不多已到该机器极限。
调整4-Tomcat连接方式
将Tomcat的连接方式由默认的BIO改为linux下的NIO(epoll)。
server.xml,并且调大连接超时时间
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="45000" redirectPort="8443"/>
再修改catalina.sh的内容头加上oracle jdk在linux平台对epoll实现支持
CATALINA_OPTS='-Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider'
依然以1200并发开始作为基数测试。
预热稳定后走势图
报告
TPS维持在22~25之间。
观察top情况,us%占用较大,怀疑tomcat的JVM或者是Java代码遇到了瓶颈。
记录:第15页,调整5-Tomcat的启动JVM参数之前
相关推荐
- **压力测试**: 逐步增加负载直到系统达到或超过极限,目的是发现系统的瓶颈和崩溃点。 - **容量测试**: 主要针对数据库系统,在大数据量的情况下评估系统的处理能力和响应时间。 #### 3. 性能测试阶段 - **单元...
- **负载均衡**:将请求分发到多个服务器,防止单点过载。 - **分布式计算**:利用多台机器协同工作,提升整体处理能力。 7. **缓存策略**: - **本地缓存**:在应用层面缓存常用数据,减少数据库访问。 - **...
在性能调优中,我们需要考虑以下几点: 1. 年轻代和老年代的大小配置:通过`-Xms`和`-Xmx`设定堆大小,`-XX:NewRatio`设定新生代和老年代的比例,`-XX:SurvivorRatio`设定Eden和Survivor区的比例。 2. CMS的并发级别...
### 系统调优性能测试报告关键知识点解析 #### 一、报告背景及目的 - **文档目的**:本报告旨在总结系统调优性能测试的工作进展,并基于测试结果进行分析,判断当前调优措施是否达到了预期的目标。此外,报告还为...
- 调整系统架构,如采用负载均衡策略分散压力,避免单点过载。 - 代码优化,减少不必要的计算和内存占用,提高程序运行效率。 - 数据库优化,例如索引调整、查询优化,以提高数据处理速度。 7. **结论** - TWMP...
以上就是关于"JAVA性能测试与调优案例"的一些核心知识点,这些内容可以帮助开发者深入理解如何优化JDK和Tomcat,以提升Java应用的性能和稳定性。实际操作中,应结合具体的应用场景和需求进行有针对性的调优,以实现...
1. **系统承压能力验证**:通过压力测试来验证系统的前端及后端是否能够满足预期的要求,类似于功能测试中的预期结果和实际结果对比。 2. **确定最佳和最大压力**:评估系统可以承受的最佳压力和最大压力,以此来...
- **JMeter**:开源性能测试工具,适合Web应用的压力测试。 - ** Gatling**:轻量级、高性能的负载测试框架,用于Web应用。 在实际测试过程中,还需要关注系统的稳定性、响应时间的分布、错误率等关键指标,以全面...
2. **测试环境**:在实际生产环境之前,在模拟真实负载的测试环境中进行充分的测试,确保各项调优措施的有效性。 3. **版本兼容性**:注意检查所使用的软件版本之间的兼容性问题,避免因版本不匹配而导致的问题。 #...
3. 考虑负载均衡策略,分散请求到多个服务器,减少单点压力。 4. 定期进行性能监控和压力测试,及时发现并解决潜在问题。 此次压力测试提供了宝贵的性能数据,为系统优化和性能调优提供了依据,确保CRM系统在高并发...
为了模拟系统在高负载下的表现,我们可以使用`stress`和`stress-ng`这样的压力测试工具。通过这些工具,我们可以模拟各种高负载场景,检验系统的稳定性和性能极限。而`sysstat`工具集中的`mpstat`和`pidstat`则为...
效率测试的常见手段包括基准测试、并发测试、递增测试、场景测试、极限测试、疲劳测试、吞吐量测试和数据存储容量测试,以及网络性能测试。基准测试用于获取单用户执行时的各项性能指标,为多用户并发和混合场景的...
- 压力测试:模拟大量并发用户,检查数据库的负载承受能力。 - 回归测试:在数据库更新后,确保原有的功能没有受到影响。 3. **测试工具**: - SQL查询:编写SQL语句来验证数据的存储和检索。 - 数据库管理工具...
2. **性能测试类型**:包括负载测试(模拟正常工作负载)、压力测试(超出正常工作负载)、耐久测试(长时间运行以检查稳定性)和容量测试(确定系统处理能力的极限)。 3. **性能指标**:了解关键性能指标,如响应...
1. 压力测试:模拟超过正常负载条件,检查系统的极限性能和稳定性。 2. 负载测试:逐渐增加负载,观察性能变化,确定系统处理能力的上限。 3. 稳定性测试:长时间运行系统,检查其能否在高负载下持续稳定工作。 六...
- **压力测试**:通过编写C#脚本来模拟大量用户的并发操作,评估系统的极限容量。 ### 3. C#中的具体技术应用 #### 3.1 单元测试示例 - **使用NUnit进行单元测试**: ```csharp using NUnit.Framework; [Test...
- **第三方工具**:例如Percona Toolkit、MySQLTuner等。 #### 8. 网络瓶颈判断 - **方法**: - **网络延迟**:使用ping命令检查网络延迟。 - **带宽使用**:监测网络流量,确保没有超出带宽限制。 - **丢包率...
2. **压力测试**:逐渐增加负载,直到系统达到极限,观察系统的临界点和稳定性。 3. **耐久性测试**:长时间运行测试,检测系统在长时间工作后的性能衰减情况。 4. **基准测试**:在特定配置下,确定系统的基线性能...
- 压力测试:模拟超过正常工作负载的情况,观察系统崩溃或性能显著下降的临界点。 - 负载测试:在预期的正常和高峰负载下测试系统性能,确定系统处理能力和稳定性。 - 耐久测试(长事务测试):长时间运行测试,...