赞
踩
JVM 调优是一个系统而又复杂的过程,但我们知道,在大多数情况下,我们基本不用去调整 JVM 内存分配,因为一些初始化的参数已经可以保证应用服务正常稳定地工作了。而且一般情况下,就算出现了,也是架构师级别的去处理。
实际上,JVM 调优,调的是稳定,并不能带给你性能的大幅提升。服务稳定的重要性就不用多说了,保证服务的稳定,gc 永远会是 Java 程序员需要考虑的不稳定因素之一。复杂和高并发下的服务,必须保证每次 gc 不会出现性能下降,各种性能指标不会出现波动。因此我们通过压测的方式来看一下对 JVM 的性能是否造成影响。而压测主要就是看吞吐量和响应时间。
JDK1.8 默认垃圾收集器 Parallel Scavenge(新生代)+Parallel Old(老年代)。Parallel 就是关注吞吐量的垃圾收集器,高吞吐量则可以高效率地利用 CPU 时间,尽快完成程序的运算任务。通过命令java -XX:+PrintCommandLineFlags -version
可以查看默认垃圾回收器。
所谓吞吐量就是 CPU 用于运行用户代码的时间与 CPU 总消耗时间的比值,即:
吞吐量:吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最常用的性能测试指标。即吞吐量 = 运行用户代码时间 / (运行用户代码时间+垃圾收集时间)
。
响应时间:执行一个请求从开始到最后收到响应数据所花费的总体时间,即从客户端发起请求到收到服务器响应结果的时间。
Ab(ApacheBench) 测试工具是 Apache 提供的一款测试工具,具有简单易上手的特点,在测试 Web 服务时非常实用。ab 一般都是在 Linux 上用。安装非常简单,只需要在 Linux 系统中输入命令安装:
yum-y install httpd-tools
复制代码
ab [options] 需要进行压力测试的url
复制代码
参数说明:
-n 即requests,用于指定压力测试总共的执行次数。
-c 即concurrency,用于指定的并发数。
-t 即timelimit,等待响应的最大时间(单位:秒)。
-b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
-p 即postfile,发送POST请求时需要上传的文件,此外还必须设置-T参数。
-u 即putfile,发送PUT请求时需要上传的文件,此外还必须设置-T参数。
-T 即content-type,用于设置Content-Type请求头信息,例如:application/x-www-form-urlencoded,默认值为text/plain。
-v 即verbosity,指定打印帮助信息的冗余级别。
-w 以HTML表格形式打印结果。
-i 使用HEAD请求代替GET请求。
-x 插入字符串作为table标签的属性。
-y 插入字符串作为tr标签的属性。
-z 插入字符串作为td标签的属性。
-C 添加cookie信息,例如:"Apache=1234"(可以重复该参数选项以添加多个)。
-H 添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
-A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
-P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。
-X 指定使用的和端口号,例如:"126.10.10.3:88"。
-V 打印版本号并退出。
-k 使用HTTP的KeepAlive特性。
-d 不显示百分比。
-S 不显示预估和警告信息。
-g 输出结果信息到gnuplot格式的文件中。
-e 输出结果信息到CSV格式的文件中。
-r 指定接收到错误信息时不退出程序。
-h 显示用法信息,其实就是ab -help。
复制代码
测试
模拟并发请求 10 次,总共请求 10 万次。
名词解释:
Server Software: (服务器软件名称及版本信息)
Server Hostname: 127.0.0.1(服务器主机名)
Server Port: 8080(服务器端口)
Document Path: /blind/order(供测试的URL路径)
Document Length: 7 bytes(供测试的URL返回的文档大小)
Concurrency Level: 10(并发数)
Time taken for tests: 60.070 seconds(压力测试消耗的总时间)
Complete requests: 100000(总次数)
Failed requests: 0(失败的请求数)
Write errors: 0(网络连接写入错误数)
Total transferred: 13900000 bytes(传输的总数据量)
HTML transferred: 700000 bytes(HTML文档的总数据量)
Requests per second: 1664.73 [#/sec] (mean)(平均每秒的请求数,即服务器的吞吐量)
Time per request: 6.007 [ms] (mean)(所有并发用户(这里是10)都请求一次的平均时间)
Time per request: 0.601 [ms] (mean, across all concurrent requests)(单个用户请求一次的平均时间)
Transfer rate: 225.97 [Kbytes/sec] received(每秒获取的数据长度 (传输速率,单位:KB/s))
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 4
Processing: 0 6 4.5 4 67
Waiting: 0 6 4.5 4 67
Total: 0 6 4.5 4 68
Percentage of the requests served within a certain time (ms)
50% 4 (50%的请求在4ms内返回 )
66% 5 (66%的请求在5ms内返回 )
75% 7
80% 9
90% 12
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。