Jmeter使用之生产环境性能优化-案例一

一、前言

1、服务器配置:

阿里云学生机 CPU型号 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz
CPU: 1个1核
内存 2G
操作系统 CentOS Linux release 7.5.1804 (Core)
Jdk 1.8.0_144
Tomcat 8.5.24
Apache 2.4.6
应用 lvdong

2、服务器架构:

反向代理
Apache
Tomcat

3、线程组配置:
Jmeter使用之生产环境性能优化-案例一_第1张图片

4、请求:
Jmeter使用之生产环境性能优化-案例一_第2张图片

二、测试结果

  • 测试结果一

    1、压测结果(优化前):
    在这里插入图片描述
    Jmeter使用之生产环境性能优化-案例一_第3张图片
    Jmeter使用之生产环境性能优化-案例一_第4张图片

  • 测试结果二
    1、压测结果(优化前):
    在这里插入图片描述
    Jmeter使用之生产环境性能优化-案例一_第5张图片

三、分析原因

1、查看apache相关日志:

2、查看tomcat相关日志:
access_log
Jmeter使用之生产环境性能优化-案例一_第6张图片

3、查看应用相关日志:
lvdong.log
Jmeter使用之生产环境性能优化-案例一_第7张图片
4、查看GC相关日志:
Jmeter使用之生产环境性能优化-案例一_第8张图片

四、总结原因

1、apache和tomcat连接的稳定性;

 经查阅资料,apache和tomcat共有三种连接方式,分别是http_proxy、jk、ajp_proxy,其中推荐使用jk。

2、tomcat启动方式和本身的线程池配置

  • BIO:
    一个线程处理一个请求。
    缺点:并发量高时,线程数较多,浪费资源。
    Tomcat7或以下,在Linux系统中默认使用这种方式。

  • NIO:
    利用Java的异步IO处理,可以通过少量的线程处理大量的请求。
    Tomcat8在Linux系统中默认使用这种方式。
    Tomcat7必须修改Connector配置来启动:

  • APR:
    即Apache Portable Runtime,从操作系统层面解决io阻塞问题。
    Tomcat7或Tomcat8在Win7或以上的系统中启动默认使用这种方式。
    Linux如果安装了apr和native,Tomcat直接启动就支持apr。

    推荐文章:Tomcat三种运行模式(BIO, NIO, APR)

3、Apache与Tomcat动静分离

 Tomcat的access_log中依旧有css等静态文件的请求日志,大家都知道Tomcat处理静态资源比Apache慢得多,所以,我们应该将静态资源直接交由Apache管理。

4、JVM参数优化

 GC日志中,日志的信息可以看出,采用了Serial收集器,我们更希望使用CMS。

关于这些内容,我与大家一起深入学习… 未完待续…

五、优化方案:

备注:受限于一台服务器的原因,优化方案中,Apache就只布置一个。

服务器架构:

反向代理
动态请求
静态资源
Apache
Is CSS ...?
Tomcat
1、Apache+Tomcat 动静分离:
原有配置:

Apache的配置

# 所有该域名下的请求,都转发给Tomcat处理
 
   ServerName www.vgtable.xin  
   ProxyPreserveHost On
   ProxyPass / http://localhost:8080/   
   ProxyPassReverse / http://localhost:8080/   
   ErrorLog "logs/www.vgtable.xin/error.log"  
   CustomLog "logs/www.vgtable.xin/access.log" common    
  

Tomcat原有配置:

 
		
		

优化配置

Apache优化后的配置:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule headers_module modules/mod_headers.so


    ProxyPassMatch !
    
        Header set Cache-Control "max-age=604800"
    


# 注意:/var/www/html/ 这个目录是具有文件访问权限,一般这是安装的时候,默认指定的
# 如果没有权限,则Apache打印的日志中,会有权限不足提示,同时页面显示403 Fobidden
#
# 因为是javaWeb项目,当初没有考虑到前后端分离,所以assets下的静态文件都在原项目中,这次将assets重新拷贝出来,放在apache管理的html静态文件夹下。
# 如果直接用linux cp 命令,注意权限同样被复制过去的问题,cp过去需要重新赋予权限,和 /var/www/html/其他文件权限保持一致可以。

Alias /assets /var/www/html/vgtable.xin/assets

    AllowOverride None
    Require all granted
    #apache2.4的配置,注意2.2可能不识别这个,需要改为
    #Order Allow,Deny
    #Allow From All


 
   ServerName www.vgtable.xin  
   ProxyPreserveHost On
   ProxyPass / http://localhost:8080/   
   ProxyPassReverse / http://localhost:8080/   
   ErrorLog "logs/www.vgtable.xin/error.log"  
   CustomLog "logs/www.vgtable.xin/access.log" common    
  

Tomcat优化后的配置

  ...
  
  
  
  ...
 
	 ...
	 
			
			
	
	...

验证结果:

打开http://www.vgtable.xin/VgMenu.do?method=findAll&category=all
Ctrl+F5 强制刷新,多刷新几次,验证功能正常。

查看Apache下的应用日志logs/www.vgtable.xin/access.log,请求正常,且有静态资源请求日志。(下图)
Jmeter使用之生产环境性能优化-案例一_第9张图片

查看Tomcat下的logs/localhost_access_log.2018-11-05.txt日志信息,确认其中,不在含有静态文件请求日志。
Jmeter使用之生产环境性能优化-案例一_第10张图片

推荐文章:apache + tomcat动静分离配置

3、Tomcat线程池优化:
未完待续
2、JVM优化:

在我们的Tomcat下 bin/catalina.sh 文件第一行,加入以下配置。

CATALINA_OPTS="
		-server 
		-XX:+AggressiveOpts 
		-XX:+UseBiasedLocking 
		-XX:+UseConcMarkSweepGC 
		-XX:+CMSParallelRemarkEnabled 
		-XX:+UseCMSCompactAtFullCollection"

推荐文章 Tomcat 调优及 JVM 参数优化

六、优化结果

重启Tomcat,Httpd

  • 测试结果一
    在这里插入图片描述

Jmeter使用之生产环境性能优化-案例一_第11张图片

Jmeter使用之生产环境性能优化-案例一_第12张图片

  • 测试结果二
    在这里插入图片描述

Jmeter使用之生产环境性能优化-案例一_第13张图片

Jmeter使用之生产环境性能优化-案例一_第14张图片

你可能感兴趣的:(性能优化)