调整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
之前