Jmeter之tomcat性能测试+性能改进措施
Jmeter用于tomcat性能测试,因为项目部署在tomcat,正常情况下,一个tomcat可以承受500个并发,通过修改配置,及其相关的tomcat优化,可以承受到1000个并发。
如何测试tomcat优化前和优化后的结果?
通过Jmeter测试,就能达到对应的效果
Jmeter测试tomcat比较简单
1.建立对应的线程组
2.建立Http请求 需要填写的一个是协议名称,一个是IP地址或域名,一个是端口号,还有一个是路径
这个路径默认不填也行,如果具体到post或get请求及其携带参数,就需要填写
如果测试具体的get或post请求,加请求url和对应的参数,如下图所示:
注意和postMan工具有些相似,不同于postman,Jmeter可以进行多用户测试,即多个线程测试
通过察看结果树,可以查看请求失败:
聚合报告可供分析:
server.xml文件:
线程池优化:
连接池优化:
Executor重要参数说明:
name:共享线程池的名字。这是Connector为了共享线程池要引用的名字,该名字必须唯一。默认值:None;
namePrefix:在JVM上,每个运行线程都可以有一个name 字符串。这一属性为线程池中每个线程的name字符串设置了一个前缀,Tomcat将把线程号追加到这一前缀的后面。默认值:tomcat-exec-;
maxThreads:该线程池可以容纳的最大线程数。默认值:200;
maxIdleTime:在Tomcat关闭一个空闲线程之前,允许空闲线程持续的时间(以毫秒为单位)。只有当前活跃的线程数大于minSpareThread的值,才会关闭空闲线程。默认值:60000(一分钟)。
minSpareThreads:Tomcat应该始终打开的最小不活跃线程数。默认值:25。
threadPriority:线程的等级。默认是Thread.NORM_PRIORITY
连接池重要参数说明:
executor:表示使用该参数值对应的线程池;
minProcessors:服务器启动时创建的处理请求的线程数;
maxProcessors:最大可以创建的处理请求的线程数;
acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
这时你会发现性能会得到很大的提升
当然必要的时候,需要修改tomcat的内存
tomcat的3种运行模式
bio:
默认的模式,性能非常低下,没有经过任何优化处理和支持.
nio:
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。
apr:
安装起来最困难,但是从操作系统级别来解决异步的IO问题,大幅度的提高性能.
启动NIO模式
修改server.xml里的Connector节点,修改protocol为org.apache.coyote.http11.Http11NioProtocol
上述比对,这也就是我们为什么选择NIO的原因
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
java基础学习_多线程01_多线程_day23总结
java基础学习_多线程01_多线程_day23总结 ============================================================================= ============================================================================= 涉及到的知识点有: 1:多线程(理解) (1)多线程的概述 (2)Java程序的运行原理及JVM的启动是多线程的吗? (3)多线程的实现方案(掌握) (4)线程的调度模型和如何获取和设置线程优先级 (5)线程的控制(即线程常见的方法) (6)线程的生命周期(参照:03_线程的生命周期图解.png) (7)电影院卖票程序的实现 (8)电影院卖票程序出现问题 (9)多线程安全问题产生的原因(这些原因也是我们以后判断一个程序是否有线程安全问题的依据) (10)同步解决线程安全问题 (11)回顾以前的线程安全的类 =============================================================...
- 下一篇
JDK5中Lock锁的使用
(1)JDK5中Lock锁的使用 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock接口。 即:JDK5以后的针对线程的锁定操作和释放操作。 Lock实现提供了比使用synchronized方法和语句可获得的更广泛的锁定操作。 (2)Lock接口的方法 void lock() 获取锁(加锁) void unlock() 释放锁 ReentrantLock类是Lock接口的实现类。 (3)示例代码如下 1 package cn.itcast_01; 2 /* 3 * 虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁, 4 * 为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock接口。 5 * 6 * Lock接口的方法: 7 * void lock() 获取锁(加锁) 8 * void unlock() 释放锁 9 * 10 * ReentrantLock类是Lock接口的实现类。 11...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题