JVM调优总结--压力测试

23 篇文章 1 订阅
订阅专栏

目录

0.跟本文相关的面试题

​编辑

1.查看JVM进程:

2.Linux查看进程的线程信息

(1). ps指令:

(2). pstree指令

(3). top指令

(4)top查看CPU使用率(重要)

3.查看JVM 的gc信息

(1) 第一种方式

(2) 第二种方式

4.查看设置JVM参数:

(1).查看JVM所有参数: 

(2).查看JVM单一参数:

(3).设置堆转储文件:

5.K8s集群环境 

6.FGC效果实现:

1.实现FGC效果

2.怎样防止出现FGC?

7. jmeter并发压力测试

1.线程组设置:

2.Http Request

3.Http Header Manager

4.Response Code断言

5.结果查看:

6. 聚合报告:

5.JVM FGC查询

8.几点性能测试思路

1.性能测试4点想法:

2.简述:

参考文章:


0.跟本文相关的面试题

JVM参数设置:

1.查看JVM进程:

C:\Users\ThinkPad>jps
33360 Launcher
4532
18696 MainClientBootStrap
21864 Launcher
18380 MainServerBootStrap
19212 Jps

2.Linux查看进程的线程信息

参考文章: Linux查看进程的线程信息_慕城南风的博客-CSDN博客_linux查看线程

(1). ps指令:

在ps命令中,“-T”选项可以查看线程信息。下面的命令列出了由进程号为<pid>的进程中的所有线程。 

ps -T -p <pid>

SID”栏表示线程ID,而“CMD”栏则显示了线程名称。  

[root@zhihuiyingxiao-dev-68499-04i2g ~]# ps -T -p 20754
  PID  SPID TTY          TIME CMD
20754 20754 ?        00:00:00 java
20754 20755 ?        00:00:17 java
20754 20756 ?        00:00:30 java
20754 20757 ?        00:00:30 java
20754 20759 ?        00:02:11 java
20754 20760 ?        00:00:00 java
20754 20761 ?        00:00:02 java
20754 20762 ?        00:00:00 java
20754 20774 ?        00:02:13 java
20754 20800 ?        00:15:19 java
20754 20801 ?        00:17:50 java
20754 20802 ?        00:03:39 java
20754 20803 ?        00:00:07 java
20754 20804 ?        00:00:00 java
20754 20805 ?        00:00:11 java
20754 20806 ?        00:01:07 java
20754 20807 ?        00:00:01 java
20754 20808 ?        00:15:17 java
20754 20809 ?        00:00:12 java
20754 20810 ?        00:00:02 java
20754 20811 ?        00:01:04 java
..................................

(2). pstree指令

// 打印所有进程及其线程
pstree -p 
// 打印某个进程的线程数
pstree -p {pid} | wc -l

(3). top指令

top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。

加了-H参数后,top的每一行就不是显示一个进程,而是一个线程。 

top -H

要让top输出某个特定进程<pid>并检查该进程内运行的线程状况:

top -H -p <pid>

(4)top查看CPU使用率(重要

参看下面这篇文章:

linux下用top命令查看cpu利用率超过100%_huangshanchun的博客-CSDN博客_top命令查看cpu使用率

下图中我们看到了什么?CPU使用率达到176.4%+51.8%+......???不要害怕,这是所有CPU的使用率加起来得到的值。

运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来。

按下1后可以看到我的机器的CPU是16核的。%Cpu0,%Cpu1 ---> %Cpu15。

这里我们也可以查看一下CPU信息:在 命令行里输入:

cat /proc/cpuinfo

3.查看JVM 的gc信息

(1) 第一种方式

(2) 第二种方式

参考文章: JVM查看gc情况_本本的香菜的博客-CSDN博客_jvm查看gc 

jstat -gcutil pid interval(ms)

S0: 新生代中Survivor space 0区已使用空间的百分比

S1: 新生代中Survivor space 1区已使用空间的百分比
E: 新生代已使用空间的百分比
O: 老年代已使用空间的百分比
M: 方法区已使用空间的百分比

YGC: 从应用程序启动到当前,发生Yang GC 的次数

YGCT: 从应用程序启动到当前,Yang GC所用的时间【单位秒】

FGC: 从应用程序启动到当前,发生Full GC的次数

FGCT: 从应用程序启动到当前,Full GC所用的时间

GCT: 从应用程序启动到当前,用于垃圾回收的总时间【单位秒】

4.查看设置JVM参数:

(1).查看JVM所有参数: 

jinfo pid
C:\Users\ThinkPad>jinfo 18380
Attaching to process ID 18380, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.291-b10
Java System Properties:

java.runtime.name = Java(TM) SE Runtime Environment
java.vm.version = 25.291-b10
sun.boot.library.path = C:\Program Files\Java\jdk1.8.0_291\jre\bin
java.vendor.url = http://java.oracle.com/
java.vm.vendor = Oracle Corporation
path.separator = ;
file.encoding.pkg = sun.io
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
sun.os.patch.level =
sun.java.launcher = SUN_STANDARD
user.script =
user.country = CN
user.dir = H:\eclipse-workspace\netty-learning
java.vm.specification.name = Java Virtual Machine Specification
java.runtime.version = 1.8.0_291-b10
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
os.arch = amd64
java.endorsed.dirs = C:\Program Files\Java\jdk1.8.0_291\jre\lib\endorsed
line.separator =

java.io.tmpdir = C:\Users\ThinkPad\AppData\Local\Temp\
java.vm.specification.vendor = Oracle Corporation
user.variant =
os.name = Windows 10
sun.jnu.encoding = GBK
java.library.path = C:\Program Files\Java\jdk1.8.0_291\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\MySQL\MySQL Server 8.0\bin\;F:\java\apache-maven-3.8.4\bin;C:\Program Files\Git\cmd;C:\Program Files\Java\jdk1.8.0_291\bin;C:\Program Files\Java\jdk1.8.0_291\jre\bin;F:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\Scripts\;C:\Users\ThinkPad\AppData\Local\Programs\Python\Python39\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Users\ThinkPad\AppData\Local\Microsoft\WindowsApps;;C:\Program Files\JetBrains\IntelliJ IDEA 2019.2.4\bin;;C:\Users\ThinkPad\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\ThinkPad\AppData\Roaming\npm;.
sun.nio.ch.bugLevel =
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot 64-Bit Tiered Compilers
os.version = 10.0
user.home = C:\Users\ThinkPad
user.timezone = Asia/Shanghai
java.awt.printerjob = sun.awt.windows.WPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
user.name = ThinkPad
java.class.path = C:\Program Files\Java\jdk1.8.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;H:\eclipse-workspace\netty-learning\target\classes;F:\java\maven-repo\io\netty\netty-all\4.1.20.Final\netty-all-4.1.20.Final.jar;C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1\lib\idea_rt.jar
java.vm.specification.version = 1.8
sun.arch.data.model = 64
sun.java.command = com.bruce.dubboLearn.provider.MainServerBootStrap
java.home = C:\Program Files\Java\jdk1.8.0_291\jre
user.language = zh
java.specification.vendor = Oracle Corporation
awt.toolkit = sun.awt.windows.WToolkit
java.vm.info = mixed mode
java.version = 1.8.0_291
java.ext.dirs = C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path = C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\classes
java.vendor = Oracle Corporation
file.separator = \
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding = UnicodeLittle
sun.cpu.endian = little
sun.desktop = windows
sun.cpu.isalist = amd64

VM Flags:
Non-default VM flags: -XX:CICompilerCount=4 -XX:InitialHeapSize=266338304 -XX:MaxHeapSize=4229955584 -XX:MaxNewSize=1409810432 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=88604672 -XX:OldSize=177733632 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
Command line:  -javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1\lib\idea_rt.jar=50717:C:\Program Files\JetBrains\IntelliJ IDEA 2021.3.1\bin -Dfile.encoding=UTF-8

(2).查看JVM单一参数:

#jinfo -flag MaxHeapSize 18380

-XX:MaxHeapSize=4229955584

(3).设置堆转储文件:

除了可以设置在内存溢出的时候进行堆转储,还可以设置在发生FUll GC的时候进行堆转储。

https://www.jianshu.com/p/0088673d8f0e

5.K8s集群环境 

在k8s集群环境下,Pod内存资源是怎样分配的?堆内存占多少呢?

假设Pod有2G的内存资源,如果不设置JVM堆内存大小,那么JVM堆的默认大小是Pod资源的 1/4,也就是说如果Pod内存资源是2G,那么JVM堆大小是500M左右;如果Pod是4G,那么JVM堆大小是1G。

Pod内存资源是2G,如果将JVM堆大小设置为1G,那么程序是启动不了的,因为Pod作为一个虚拟机,并不是所有的内存资源都可以给JVM使用的。

[root@shuziyingxiao-prod-05912-hpi30 ~]# kubectl exec -it wit-crm-58f7bb9b75-dcqjk -n wit - 
 -- /bin/sh
/ # 
/ # jps
8 app.jar
11085 Jps
/ # 
/ # jinfo -flag MaxHeapSize 8
-XX:MaxHeapSize=536870912
/ # 
/ # jstat -gcutil 8 2000
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
 47.92   0.00  69.32  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  69.83  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  69.85  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  71.56  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  71.72  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  71.73  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  71.82  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  73.33  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  73.69  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  73.70  84.04  87.84  81.24   9816   70.244    10    5.398   75.643
 47.92   0.00  73.90  84.04  87.84  81.24   9816   70.244    10    5.398   75.643

6.FGC效果实现:

1.实现FGC效果

怎样写代码,实现FGC的效果呢?

这里给出一个例子:

package com.example.demo.controller;

import com.example.demo.util.CreateUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("hello")
public class TestController {

    @GetMapping("world")
    public String getResponse(){
        Object[] objects = new Object[600*1024];
        for (int i=0; i< 600*1024 ; i++){
            objects[i] = new Object();
        }
//        CreateUtil.add();
        System.out.println("hello, world, bruce!");
        return "hello, world - 20220505!";
    }
}

new一个足够大的数组,然后用new object填充,每次请求都是这样的操作。

然后打开jmeter,1000个并发线程去访问上面的API

产生FGC:

2.怎样防止出现FGC?

增加JVM堆内存,继续观察FGC情况

java -Xms1024M -Xmx1024M ...........

7. jmeter并发压力测试

1.线程组设置:

2.Http Request

3.Http Header Manager

4.Response Code断言

5.结果查看:

察看结果数,列出每个请求结果。

6. 聚合报告:

展示统计数据:

5.JVM FGC查询

在jmeter压力测试下,FGC的情况如下(不同JVM堆内存情况下,肯定是不同的)

# jinfo -flag MaxHeapSize 8
-XX:MaxHeapSize=536870912
/ #
/ # jstat -gcutil 8 2000
 99.79   0.00  53.20  77.92  93.02  89.91   2699   26.561    19   10.513   37.074
  0.00   1.32  44.46  82.09  93.02  89.91   2706   26.757    19   10.513   37.269
.................................................................................
  0.00  99.76   4.63  95.18  93.02  89.91   2756   27.520    19   10.513   38.032
  0.00  25.46   0.00  74.81  93.02  89.91   2762   27.716    20   11.057   38.773
  2.08   0.00  27.42  74.86  93.02  89.91   2769   27.825    20   11.057   38.882
  2.08   0.00  91.13  74.89  93.02  89.91   2775   27.925    20   11.057   38.982
.................................................................................
 71.88   0.00  11.92  95.90  93.02  89.91   2897   29.400    20   11.057   40.457
 47.41   0.00   6.89  74.85  93.02  89.91   2901   29.517    21   11.619   41.136
.................................................................................
100.00   0.00  48.90  83.38  93.02  89.91   2949   30.187    21   11.619   41.806
  0.00   2.08  93.24  89.58  93.02  89.91   2956   30.352    21   11.619   41.970
 99.81   0.00   0.00  97.09  93.02  89.91   2963   30.521    22   11.619   42.139
.................................................................................
 99.45   0.00  32.35  84.58  93.02  89.91   3005   31.117    22   12.218   43.335
 36.08   0.00 100.00  87.78  93.02  89.91   3011   31.194    22   12.218   43.411
  0.00  27.15   0.00  98.47  93.02  89.91   3018   31.370    23   12.218   43.588
.................................................................................
  0.00  43.18  42.41  91.09  93.02  89.91   3066   31.986    23   12.804   44.790
 54.94   0.00  45.68  74.82  93.02  89.91   3071   32.132    24   13.350   45.482
 10.42   0.00  38.28  77.59  93.02  89.91   3079   32.228    24   13.350   45.578
.................................................................................
  0.00   6.25  87.94  94.80  93.02  89.91   3162   33.351    24   13.350   46.701
 99.25 100.00 100.00 100.00  93.02  89.91   3167   33.507    25   13.350   46.858
  0.00  11.11   4.60  75.91  93.02  89.91   3169   33.532    25   13.911   47.443
.................................................................................
  0.00  12.50  43.05  96.73  93.02  89.91   3263   34.767    25   13.911   48.678
 99.25 100.00 100.00 100.00  93.02  89.91   3268   34.859    26   13.911   48.771
 45.14   0.00  25.03  77.36  93.02  89.91   3273   35.003    26   14.471   49.474
 44.21   0.00  61.38  82.77  93.02  89.91   3279   35.223    26   14.471   49.695
  0.69   0.00  48.51  91.25  93.02  89.91   3285   35.307    26   14.471   49.778

8.几点性能测试思路

1.性能测试4点想法:

  1. 微服务系统里面包含多个微服务,有些用户请求可能经过多个微服务处理,在做性能测试的时候,可以使用skywalking微服务调用链路追踪工具,看看哪个微服务响应慢,然后去提升这个微服务的性能。
  2. 提升微服务性能的时候,要想办法提高每个实例的性能,就像我们前几天讨论的,先采用最简单的方式,就是增加JVM堆内存,减少FGC频率。不能简单的增加这个微服务的实例数量,毕竟提升每个实例性能,比简单的增加实例数量消耗的资源要少,不然的话,服务器资源迟早不够用。
  3. 性能测试的时候,会不会发生内存溢出这样的问题,怎么抓这样的问题? 可以通过增加JVM启动参数的方式,在发生内存溢出的时候,生成堆转储文件,我们可以对这个堆转储文件进行分析。
  4. .对于系统承载不了的请求,要用sentinel做限流 熔断 降级

2.简述:

  1. 使用skywalking监控相应慢的微服务,并对其进行优化
  2. 优化微服务的时候,要以优化单实例性能为主,减少实例数量,避免过度消耗服务器资源
  3. 内存溢出监控
  4. sentinel限流熔断降级

参考文章:

如何查看Linux的内存使用率 - Hackerman - 博客园 (cnblogs.com)

JVM使用压测工具AB进行压测测试
weixin_56421907的博客
03-27 365
0、测试环境 系统:mac os 1、检查本机初始化堆大小 现在还没有进行压测,测试下这台机器的堆初始化情况。 命令 java -XX:+PrintFlagsFinal -version | grep HeapSize localhost:~ wangxinqiao$ java -XX:+PrintFlagsFinal -version | grep HeapSize uintx ErgoHeapSizeLimit = 0
【JVM进阶之路】十:JVM调优总结
最新发布
2401_83641392的博客
04-19 925
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。你的支持,我的动力;祝各位前程似锦,offer不断!!!《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!77576)][外链图片转存中…(img-bPvLSYrm-1713529477578)]
2019年Java大厂面试题讲解(周阳) 之 JVM参数调优
轻狂书生FS的博客
09-22 2282
JVM参数调优前言JVM参数类型查看运行的Java程序,JVM参数是否开启,具体值为多少?题外话(坑题)查看JVM默认参数工作中常用的JVM基本配置参数查看堆内存打印JVM默认参数生活常用调优参数GC垃圾收集Full GC垃圾回收-XX:SurvivorRatio-XX:NewRatio(了解)-XX:MaxTenuringThreshold 前言 你说你做过JVM调优和参数配置,请问如何盘点查看JVM系统默认值 使用jps和jinfo进行查看 -Xms:初始堆空间 -Xmx:堆最大值 -Xss:栈空间
[JVM]使用JMeter做压力测试
weixin_33815613的博客
03-12 148
MAC环境安装jmeter 安装: brew install jmeter 打开: open /usr/local/bin/jmeter 1.新建一个线程组,如下图所示 Ramp-up Period指的是随着时间的后移,启动的用户请求会增加,这个时间是总时间,10秒内跑完200个用户请求,也就是一秒增加20个请求。 设置压力测试时线程数,每秒请求数。 2.添加一个Summe...
JVM压测分析
weixin_34418883的博客
05-20 206
为什么80%的码农都做不了架构师?>>> ...
【JVM】压力测试与调优
努力充实,远方可期
08-30 4398
文章目录黑马JVM2 jvm的运行参数2.1 ==三种参数类型==标准参数-X参数(非标准参数)-XX参数(使用率较高)2.2 标准参数2.2.2 -server与-client参数2.3 `-X`参数2.3.1 -Xint 、 -Xcomp 、 -Xmixed2.4 `-XX`参数2.5 `-Xms`与`-Xmx`参数2.6 查看jvm的运行参数2.6.1 运行java命令时打印参数`-XX:+PrintFlagsFinal`2.6.2 查看正在运行的jvm参数`jinfo`3 jvm的内存模型3.1
jvm调优学习-optimizeJVM.zip
11-06
- 运行压力测试,模拟真实负载下的JVM行为。 JVM调优是一个持续的过程,涉及到很多细节和技巧。通过深入理解JVM工作原理,结合具体的应用场景和需求,我们可以逐步调整和优化,以实现最佳性能。"optimizeJVM-...
用于测试jvm gc调优-share-jvm-gc.zip
11-07
"用于测试jvm gc调优-share-jvm-gc.zip"这个压缩包文件很可能包含了一些工具、脚本或教程,用于帮助我们了解和实践JVM的垃圾收集优化。 首先,我们需要理解JVM GC的基本原理。垃圾收集器的主要任务是识别并回收不再...
jvm参数调优-jvmSample.zip
11-06
4. 定期进行压力测试,确保在高并发情况下系统的稳定性和响应速度。 总之,JVM参数调优是一门深奥的艺术,需要结合具体的应用场景和性能需求进行精细化调整。通过对"jvmSample-master"这样的实战案例学习,我们可以...
jvm性能调优-垃圾收集器parnew&CMS底层三色标记算-performance-gc-parnew-cms.zip
01-29
本文将深入探讨两个重要的垃圾收集器——ParNew和Concurrent Mark Sweep (CMS) ——以及它们在JVM性能调优中的作用,特别是基于三色标记算法的实现。 首先,ParNew垃圾收集器是新生代(Young Generation)的默认...
JVM 压测和性能分析
互联网知识分享
08-12 228
压测的目的是评估系统在不同负载情况下的性能表现,通过模拟真实场景中的并发访问、请求量以及负载情况,我们可以发现系统在高负载情况下的性能瓶颈和问题,以便进行优化。压测的原理是通过创建大量的并发用户请求,模拟真实场景中的负载情况,观察系统在不同负载下的性能指标,如响应时间、吞吐量和并发处理能力等。通过压测,我们可以发现系统的性能瓶颈,进而进行性能优化。在这个过程中,我们可以通过模拟并发用户访问、大量请求以及各种负载条件,来测试应用程序在高负载情况下的性能表现,并根据测试结果进行性能优化。占用过高、线程死锁等。
Java基础之《JVM性能调优(15)—系统并发性能jmeter压测》
csj50的专栏
04-16 1689
一、估算系统的性能最大吞吐量 1、首页获取商品列表 模拟首页产生10KB的数据。
JVM调优+性能测试——2一次压力测试问题定位
卖辣椒也用券
06-03 1150
今天有点空闲,便对程序作了一次压力测试。 系统Centos7.6, jdk1.8,jvm配置:JAVA_MAX_PERM_MEM="256m" JAVA_MAX_MEM="256m", 使用JMetter做并发模拟。 刚开始200个并发,程序OK,在大概13秒之内全部成功。当叠加到600个并发时,程序死掉了,http请求无响应,不出所料,有问题是正常的。接下来记录一下排查过程。 首先拿到程序...
jvm 压测工具(jmeter)
weixin_43931625的博客
03-31 394
jvm压测工具(jmeter) 应用:性能检测和压力测试工具,可对http服务器、ftp服务器、数据库进行压力测试
如何进行系统压测,JVM性能调优
任我行哟的博客
12-09 660
1、使用Jmeter或者阿里云付费压测 2、压测观察机器带宽、CPU、内存总体使用率,JVM进程CPU、内存使用率 3、jstat -gc pid 1000 100 观察对象回收状况、与gc频率。 4、dump内存快照,看是否存在JVM参数设置不合理导致频繁full gc、还是代码存在内存泄露。 5、进行JVM参数调优或者代码优化。 ...
JMeter压力测试与JVM监控以及调优
fen_dou_shao_nian的博客
08-22 3277
一、性能指标 -★ 响应时间(Response Time: RT) 响应时间指用户从客户端发起一个请求开始,到客户端接收到从服务器端返回的响 应结束,整个过程所耗费的时间。 HPS(Hits Per Second) :每秒点击次数,单位是次/秒。 ★TPS(Transaction per Second):系统每秒处理交易数,单位是笔/秒。 ★QPS(Query per Second):系统每秒处理查询次数,单位是次/秒。 对于互联网业务中,如果某些业务有且仅有一个请求连接,那么 TPS=QPS=HPS,一
JVM 测试结果分析
huhu07的专栏
05-19 661
1 Object[] objects = new Object[100000];会直接分配内存2. ArrayList&lt;Byte&gt; 不允许一直添加数据添加超过1,197,571,636 接近12亿for (; i &lt;= Integer.MAX_VALUE - 3; i++) { list.add(tb); }LinkedList&lt;Byte&gt; 一直添加数据会引起...
移动专线维护系统3_项目压力测试、JVM内存情况分析
xiaosi的博客
11-27 1080
一、说明 服务器参数 服务器1:2核2G CentOS7 带宽 1M 服务器2:2核2G 带宽 1M 内存、CPU使用情况 二、测试内容 1、Nginx服务器压测 首先docker stats 打开监控 1.设置JMeter ,100个线程,测试时间2分钟 结果分析 2.1000个线程,压测1分钟 图表 线程数量 压测时间 异常 吞吐量 总样本 90%请求响应时间(没超过这个时间) 99%响应时间 100 2分钟 0.42% 200/s 23000 900 140
JVM性能调优
jj2772367224的博客
06-01 510
在使用org.apache.commons.dbcp.BasicDataSource的时候,因为之前采用了默认配置,所以当访问量大时,通过JMX观察到很多Tomcat线程都阻塞在BasicDataSource使用的Apache ObjectPool的锁上,直接原因当时是因为BasicDataSource连接池的最大连接数设置的太小,默认的BasicDataSource配置,仅使用8个最大连接。理论上,在内存不变的情况下,减少每个线程的堆栈,可以产生更多的线程,但这实际上还受限于操作系统。
写文章

热门文章

  • Keycloak各种配置及API的使用 119994
  • seata异常:io.seata.common.exception.FrameworkException: No available service 28134
  • centos7安装ELK-单机版 21856
  • Failed to configure a DataSource: ‘url’ attribute is not specified 20415
  • 让每个Http请求都自动带上token 19468

分类专栏

  • Git 3篇
  • Keycloak SSO 8篇
  • 分布式 33篇
  • Java Web 28篇
  • 个人总结 8篇
  • Java 24篇
  • Linux 3篇
  • 正则表达式 1篇
  • Python 4篇
  • 数据库 21篇
  • Springboot 12篇
  • Spring 12篇
  • 股票
  • Mybatis 4篇
  • JVM 23篇
  • 设计模式 2篇
  • Docker与K8S 7篇
  • 数据结构与算法 8篇
  • javascript 7篇
  • Nginx配置 2篇
  • 协议 1篇
  • React 15篇
  • Angular 1篇
  • 搜索引擎 1篇
  • Django 1篇
  • 多数据源 4篇

最新评论

  • git 如何撤销已经 push 的 merge

    CSDN-Ada助手: 推荐 CS入门 技能树:https://edu.csdn.net/skill/gml?utm_source=AI_act_gml

  • VirtualBox centos8安装增强功能,与主机共享粘贴板

    ICT小黑: 把kernel升级一下就好了,按照下面的步骤 # yum install -y kernel-devel gcc //安装kernel-devel和gcc编译工具链 # yum -y upgrade kernel kernel-devel //更新kernel和kernel-devel到最新版本 # reboot //重启,重启时,选择最新版本的内核启动

  • VirtualBox主机ping不通虚拟机

    weixin_43773638: 可以子网划分啊,A类可以分成若干个B或者C类网络

  • Keycloak各种配置及API的使用

    困知勉行1985: 这个不清楚,token不需要额外进行加密,在服务端生成的时候有一套生成的算法,服务端收到token之后会按照既有的规则进行处理,不符合规则的话这个token是无效的

  • Keycloak各种配置及API的使用

    BXS_null: 博主,我用账号密码的方式登录获取的token,这个token有 签名但是签名没有用密钥进行加密,这个配置密钥是怎么操作的,没有找到详细的教程

大家在看

  • 用Python实现时间序列模型实战——Day 25: 时间序列模型的实际应用 1053
  • 【后端开发】JavaEE初阶—Theard类及常见方法—线程的操作(超详解) 81
  • 【高分系列卫星简介】 1171
  • 微信公众号运营秘籍:粉丝增长与 ADQ 广告投放指南 952
  • Java基于SpringBoot的海产品加工销售一体化管理系统 微信小程序+Vue[毕业设计]

最新文章

  • Java List 转map,分组,排序
  • git 如何撤销已经 push 的 merge
  • 多线程模拟分布式事务批量插入-Oracle批量获取主键ID
2024年5篇
2023年11篇
2022年49篇
2021年106篇
2020年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

深圳SEO优化公司网站seo深度优化公司官方网站优化价格雷州网站优化排名家居网站优化价格如何提升网站优化排名福田怎么找网站推广优化优化公司网站认可t火19星网站快速排名优化方式收费情况临汾网站优化免费查询网站SEO优化报告东莞横沥网站优化seo怎样优化网站泸州清镇网站优化网站优化一周快速排名中堂文体用品网站优化广阳企业网站优化线上网站优化如皋网站优化有用吗宜都宜昌网站建设优化推广网站搜索优化公司东至网站优化设计晋中网站目标关键词优化网站排名优化软件云速捷牛x青神县网站优化南充网站优化联系方式数字资源优化网站新乡网站优化哪个公司好横岗大型网站优化深圳网站优化关键词工具汽车优化网站案例歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化