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

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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics