性能测试详解(三)Tomcat性能调优

性能测试详解(三)Tomcat性能调优,第1张

性能测试详解(三)Tomcat性能调优

文章目录

性能测试详解(三)Tomcat性能调优

1. 文件目录2.server.xml

2.0 文件内容 (后面分标签详解)2.1 server.xml优化Connectors

四种传输形态 2.2 server.xml优化线程池 Executer 线程与请求的配置。2.3 自动重载 (关闭自动重载) 3. 问题

1. 在不同肉机上压测同一个服务,吞吐量相差特别大,可能的原因有哪些?

性能测试详解(三)Tomcat性能调优

​ tomcat是一款servlet容器。tomcat暂时选择绿色版的。

​ 服务器搭建tomcat之后,会把app的jar包放到webapps里面,重启tomcat,编译jar包就可以访问项目了。tomcat是应用服务器。

​ 启动时tomcat会检查它的环境。查看启动文件源码发现它启动的是catalina,这个文件是核心文件,conf是配置文件夹,在做性能调优的时候主要调优server.html文件。其中有性能的参数设定。

1. 文件目录

conf文件夹下。

    logging.properties

    tomcat在启动时有乱码的情况需要在logging.properties中修改日志输出的编码方式。

    把encoding的格式utf-8都换成gbk就ok了。

logs文件夹下。

    catalina.log

    记录了启动信息的日志。

    localhost_access_log.时间.txt

    用户请求tomcat的访问日志。请求方式,http/https+状态码。

    localhost.time.txt

    web应用的内部程序日志。

webapp文件下

​ tomcat下存放web系统的目录,它下面每个文件夹都是一个工程项目,自己的项目可以以文件夹的形式上传,也可以使用war包,jar包等。

    如果使用war包,运行时会解析编译,会生成war包对应的文件夹。部署时一般一个tomcat管理一个项目,比较好 *** 作。在工作中会经常在webapps中部署新的版本

work路径

    运行过程中生成的文件,work路径会自动生成。
2.server.xml 2.0 文件内容 (后面分标签详解)

apache-tomcat-9.0.29-windows-x64apache-tomcat-9.0.29conf




  

  
  
  
  
  
  

  
  
    
    
  


    


    
    



    


      

        
      

      

        

      
    
  


文件源代码纯英文阅读比较困难的话,去看tomcat主页的configration页面内容,它的属性的意思可以找到。Chrom浏览器可以翻译成中文。

http://localhost:8080/docs/config/server.html

tomcat顺序性加载lib里面的jar,为了启动更快,开发会把tomcat做成嵌入式启动,用代码直接启动,如果是微服务的集群,需要启动的tomcat数量很大,所以做成了嵌入式。

2.1 server.xml优化Connectors

    嵌入式部署

    此组件的特定实例监听服务器上特定tcp端口号上的链接,可以定义端口号,比如把8080改成8081。在一个服务器上配置多个tomcat,每个不同的tomcat配置不同的端口号才可以正常访问。不过这与性能没有关系。

    Protocal:bionionio2apr

    与性能有关系的是 Connector标签的protacol,tomact基于怎么的网络协议去接收

    四种传输形态
      bio是同步阻塞型的交互方式。把请求排队,同一时间只能处理一个请求,当要用数据库的读写 *** 作可能需要2秒,那后面的请求就堵塞了,响应时间被无限延长nio是同步非阻塞的传输,类似云文件的多人编辑,文件运行中不 *** 作文件,生成一个管道,生成一个buffer缓存区,缓存区 *** 作完后再修改实际文件。一般默认为nio。伪异步的实现。Nio2是异步非阻塞。同步是线性的,从请求到响应都是同步。异步的话,等待环节取消了,有一个缓冲区,发起请求后完成特定的 *** 作后持续接收大量请求。吞吐量大。Apr系统级别的异步,apr是高并发大吞吐量数据形态的首选方式。应用访问度不频繁的话直接用nio就可以了,linux环境推荐用nio,nio2不太好用。系统访问量很大用apr,但是linux系统下使用apr要安装相关apr的包(关联的库),windows不用安装。

    compression=“on”,把请求和数据进行压缩,把空间缩小。compressionMinSize,如果为“on”,则此属性可用于指定压缩输出之前的最小数据量。

    acceptCount=“100”,当我的线程池满了以后,后续进来的请求如何处理,acceptCount为最大的等待数。超出的就拒绝掉,因为处理不过来了。暂时可抽象理解为排队的最大人数。

2.2 server.xml优化线程池 Executer 线程与请求的配置。

​ 要考虑到服务端硬件资源的环境。资源也要避免浪费。

    
    namePrefix 每个线程在启动时会有一个名字,取“catalina-exec-”前缀
      catalina-exec-1catalina-exec-2catalina-exec-3
    maxThreads 是线程池的最大数量。支撑最大线程的运行数。根据实际业务走。minSpareThreads Executor执行时,创建的线程数,线程是一个一个创建的,默认启动线程池的时候,先创建一批默认的线程数,来处理请求。maxIdleTime 一个线程的最大存活时间,以毫秒为单位,有些线程因为没有请求,没有任务的下发,线程进入了空闲状态,一直运行会消耗很多资源,所以就释放掉。prestartminSpareThreads 是否启动minSpareThreads,决定它是否生效,没有的话默认为false。maxQueueSize=“100” 最大线程等待数。

tomcat的内存与jvm的内存机制是关联的。无限放大线程池的大小时,服务端内存也会放大。

tomcat在运行时默认做了自动重载的

2.3 自动重载 (关闭自动重载)

​ java代码更新后tomcat会自动重载。自动加载的过程可能会产生隐患,容易造成内存溢出,因为需要重载class文件更新,自动去读取。所以需要关闭自动重载。

      
          
	            
    autoDeploy 是自动部署。

tomcat会关联jvm

在 **bincatalina.bat(windows系统)**中进行配置 ,JAVA_OPTS,去配置JVM的使用内存、初始化内存和最大内存等。可以准确定位到JVM的准确的内存值。(具体内容关注之后的JVM部分)tomcat与jvm需要协调。

​ CPU占用比越高,线程运行越多,系统表现越慢。测试的是什么业务,结合具体业务。合理调节系统的资源。结合实际业务场景,硬件资源来制定调优方案。不同场景下调优方向不同。比如nio,apr,可以根据试错来积累经验。5-7年的经验可能对于性能测试工程师是十分关键的。

​ 对于开发人员,tomcat的调优,懂tomcat源码,底层逻辑,交互实现等一系列内容,从代码底层了解tomcat的运行机制。

​ 对测试工程师来说,了解tomcat的配置,实现资源的最大化利用,最有效的执行,配置如何去调整。

​ 不同的角度对性能的概念是不一样的。

3. 问题 1. 在不同肉机上压测同一个服务,吞吐量相差特别大,可能的原因有哪些?
    网络问题测试脚本服务端是否出现了问题

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5721929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存