利用JMeter进行Tomcat调优

  九月底面华为的时候被问到了Tomcat调优,答得不好,趁着十一国庆这几天简单的研究了一下,现在总结下。
  Tomcat的优化分成Tomcat启动命令行中的优化参数即JVM优化以及Tomcat容器自身参数的优化。这里分别对我本机(Win10)上以及学院集群上(Redhat)的Tomcat进行调优

  一. Windows环境Tomcat调优

  1.1本机(Win10)Tomcat调优
  Tomcat首先跑在JVM之上的,因为它的启动其实也只是一个java命令行,首先我们需要对这个JAVA的启动命令行进行调优,修改catalina.bat(apache-tomcat-9.0.0.M22\bin),添加启动参数

set JAVA_OPTS=-server -Xms5000M -Xmx5000M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking

  参数解释:
  1)-Xms&-Xmx:设置初始堆大小&最大堆大小
  2)-Xss:设置线程栈大小
  3)-XX:+AggressiveOpts:使用最新加入的优化技术
  4)-XX:+UseBiasedLocking:优化线程锁
  记得从startup.bat启动tomcat。如果利用windows的系统服务启动tomcat服务,上面的设置就不生效了,就是说set JAVA_OPTS没起作用。 windows服务执行的是bin\tomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.。
  启动参数有好多,这里简单设置了几个常用的,后面有时间再调试其他参数。
  接下来进行Tomcat容器内的优化,增加吞吐量。打开tomcat安装目录\conf\server.xml文件,定位到这一行:

<Connector port="8080" protocol="HTTP/1.1"

  改为

<Connector port="8080" protocol="HTTP/1.1"
URIEncoding="UTF-8"  minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true" connectionTimeout="20000"
acceptCount="300"  maxThreads="300" maxProcessors="1000" minProcessors="5"
useURIValidationHack="false"
compression="on" compressionMinSize="2048"                                                      compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443"
/>

  参数解释:
  1)URIEncoding=”UTF-8”:使得tomcat可以解析含有中文名的文件的url
  2)maxSpareThreads:如果空闲状态的线程数多于设置的数目,则将这些线程中止,减少这个池中的线程总数。
  3)minSpareThreads:最小备用线程数,tomcat启动时的初始化的线程数。
  4)connectionTimeout:网络连接超时时间毫秒数
  5)maxThreads:使得tomcat可以解析含有中文名的文件的url
  6)maxSpareThreads:表示Tomcat可创建的最大的线程数,即最大并发数。
  7)acceptCount:当线程数达到maxThreads后,后续请求会被放入一个等待队列,这个acceptCount是这个队列的大小。



  1.2本机(Win10)JMeter测试结果
  利用压力测试软件Jmeter模拟2000*100个线程请求不断的访问localhost:8080。运行结果截图可得::


这里写图片描述
调优前

这里写图片描述
调优后

  参数解释:
  1)Samples:表示你这次测试中一共发出了多少个请求,这里模拟了100个用户,每个用户迭代2000次,那么这里显示200000。
  2)Average:平均响应时间——默认情况下是单个 Request 的平均响应时间。
  3)Max:最大响应时间.
  4)Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second)。
  由于是本机测试发布服务本机测试,测试结果很可能不精确。但是通过Throughput可见调优后的Tomcat吞吐量明显提高了。



  二. Linux环境Tomcat调优

  2.1Linux服务器(Redhat)Tomcat调优
  与Windows上Tomcat调优类似,首先我们需要对这个JAVA的启动命令行进行调优,修改catalina.sh(apache-tomcat-9.0.0.M22\bin),添加启动参数


set JAVA_OPTS=-server -Xms50000M -Xmx50000M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedLocking  -XX:+CMSParallelRemarkEnabled

  因为集群主节点内存为64G,这里通过free -m命令查看Linux集群内存使用情况,这里设置的最大内存=free+cached+buffers,设置为40000M,除此之外添加了+UseConcMarkSweepGC(设置CMS并发收集器)。
  对Linux上的Tomcat进行JAVA的启动命令行调优后,进行Tomcat容器内的优化,优化内容与Windows上一致。


  2.2Linux服务器(Redhat)JMeter测试结果
  利用压力测试软件Jmeter模拟200*100个线程请求不断的访问Linux服务器的Tomcat服务。运行结果截图可得::


这里写图片描述
调优前

这里写图片描述
调优后

  可见在Linux服务器上进行调优后,无论是平均响应时间还是吞吐量都有了小幅的提升。


  三. 总结

  分别在本机(Win10)以及服务器(Linux)对Tomcat启动命令行中的优化参数进行优化并对Tomcat容器自身参数进行优化后,吞吐量都得到了小幅的提升。提升量不大可能与调优参数设置不精确有关。而本机(Win10)调优后响应时间小幅上升可能与本机测试占用资源有关。
  参考博文:http://blog.csdn.net/centre10/article/details/50639693
       http://blog.csdn.net/u013802160/article/details/51701644

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对jmeter接口压测调优,有以下几个步骤和优化方式可以参考: 1. 首先,确保正确配置jmeter插件。将自己开发的插件放到jmeter的lib下的ext目录,并重新启动jmeter,然后在java sample中使用该插件进行压测。 2. 优化数据源连接池。如果系统接口在处理方法时需要连接数据库进行数据处理,连接数据库是一个耗时的过程。可以通过优化数据源连接池的配置来提高性能。具体优化方式可以参考相关文档或资料。 3. 减少日志打印量。大量的日志打印会对性能产生负面影响,尤其是对于IO操作,如写文件。可以调整日志输出级别,将日志级别设置为info或error级别,只打印必要的错误信息,以减少IO操作的时间消耗和磁盘空间的占用。 4. 消除冗余代码块。冗余的代码块会降低系统的性能。通过对代码进行审查和优化,减少重复的代码块,可以提高系统的执行效率。 5. 多表查询优化。对于多表查询的情况,可以使用合适的查询优化策略,如使用索引、合理设计查询语句等,以提高查询性能。 综上所述,通过正确配置jmeter插件、优化数据源连接池、减少日志打印量、消除冗余代码块和多表查询优化等方式,可以进行jmeter接口压测调优,提高系统的吞吐量和性能。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值