标签:roc ttyu 应用 原生应用 压力测试 startup ram ofo 价值
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
2.1 Tomcat
因为在我们spring-boot-starter-web在我们的依赖中,默认采用的是Tomcat容器,因此我们不需要再做更多的配置。
2.2 Jetty
为了使用Jetty,我们首先需要从spring-boot-starter-web中去掉spring-boot-starter-tomcat 这个依赖。
然后,我们只需要简单引入spring-boot-starter-jetty的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
2.3 Undertow
设置Undertow的方式和Jetty类似,不过去除依赖后,我们会使用spring-boot-starter-undertow 作为我们的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
2.4 Actuator
我们使用Spring Boot的Actuator组件来对系统进行压力测试和查询应用指标。
你可以通过阅读这篇文章来更加详细的了解Actuator。本文中,我们只需要在pom中添加这个依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.5 Apache Beach
Apache Bench是一个开源的负载测试工具,但它通常会和Apache Web 服务器捆绑在一起。
Windows用户可以点击此处进行下载。如果你的Windows电脑上已经有了这个工具,你应该可以在你的apache/bin 目录下找到ab.exe 。
如果你是Linux的用户,你可以通过apt-get命令来安装ab
$ apt-get install apache2-utils
@Component
public class StartupEventHandler {
// logger, constructor
private String[] METRICS = {
"jvm.memory.used",
"jvm.classes.loaded",
"jvm.threads.live"};
private String METRIC_MSG_FORMAT = "Startup Metric >> {}={}";
private MeterRegistry meterRegistry;
@EventListener
public void getAndLogStartupMetrics(
ApplicationReadyEvent event) {
Arrays.asList(METRICS)
.forEach(this::getAndLogActuatorMetric);
}
private void processMetric(String metric) {
Meter meter = meterRegistry.find(metric).meter();
Map<Statistic, Double> stats = getSamples(meter);
logger.info(METRIC_MSG_FORMAT, metric, stats.get(Statistic.VALUE).longValue());
}
// other methods
}
为了避免人为的通过Actuator的REST端点进行性能指标的查询,我们启动一个独立的JMX进程来记录应用启动应用时我们所关注的指标数据。
3.2 选择
Actuator可以为我们提供了大量的指标数据。在应用启动后,我们选择了三个具有代表性的指标,他们可以展现系统运行时的关键点的概况。
jvm.memory.used JVM在启动后总共使用的内存量
jvm.classes.loaded JVM中总共加载的class文件的数量
jvm.threads.live JVM中存活的线程数量。在我们的测试中,这个值可以展现为处于"休息"状态的线程的数量。
ab -n 10000 -c 10 http://localhost:8080/actuator/metrics
4.2 选择
Apache Bench能够快速的给予我们一些有用的信息:包括连接时间,在某一段时间的请求的占比等。
为了我们的目的,我们通常更加关注每秒请求个数和每个请求的处理时间的均值。
标签:roc ttyu 应用 原生应用 压力测试 startup ram ofo 价值
原文地址:http://blog.51cto.com/14028890/2323127