首页 > 系统相关 >【Linux】性能调优命令

【Linux】性能调优命令

时间:2023-04-05 16:56:33浏览次数:42  
标签:used MB 性能 调优 Linux 大小 jstat root 16418

进程性能

pidstat

cat /proc/5598(PID)/status

free

ps

top

pstree

pgrep

vmstat

#使用top命令,查找pid
$ top

# 通过TOP -H -p 进程ID,找到具体的线程占用情况
$ top -H -p 21564

#通过命令pstack 进程ID显示线程堆栈\
$ pstack 24714

Java相关

参考文档:https://qinxuewu.github.io/docs/#/JVM/jvm监控命令

jps

输出正在运行的相关进程信息
● jps -v 输出传递给jvm参数
● jps -l 输出模块名以及包名,如果是jar 则出输jar文件全名
● jps -m 输出传递给jvm参数
● jps -mlv 输出进程号,包名,虚拟机参数等所有信息
[root@izadux3fzjykx7z ~]# jps -mlv
12656 sun.tools.jps.Jps -mlv -Dapplication.home=/usr/java/jdk1.8.0_171 -Xms8m
16418 halo-latest.jar -Xms256m -Xmx256m
[root@izadux3fzjykx7z ~]# 

jstat

监控指定Java进程的性能
● -class  显示类的加载信息的相关信息;
● -compiler  显示类编译相关信息;
● -gc  显示和gc相关的堆信息
● -gccapacity  堆内存统计
● -gcmetacapacity  元空间大小
● -gcnew  新生代信息
● -gcnewcapacity  新生代大小和使用情况
● -gcold  显示老年代和永久代的信息;
● -gcoldcapacity  老年代的大小
● -gcutil  显示垃圾收集信息
● -gccause  显示垃圾回收的相关信息
● -printcompilation  输出JIT编译的方法信息;
● 类的加载信息 jstat -class pid
[root@izadux3fzjykx7z ~]# jstat -class 16418
Loaded  Bytes  Unloaded  Bytes     Time   
13293 23828.4        0     0.0      17.14

Loaded: class加载的的总数量
Bytes: 占用空间大小
Unloaded 未加载数量
Bytes   未加载占用空间大小
Time: 加载总耗时  秒

● 类编译的统计 jstat -compiler pid
[root@izadux3fzjykx7z ~]# jstat -compiler  16418
Compiled Failed Invalid   Time   FailedType FailedMethod
 14109      3       0    62.83          1 org/springframework/core/xxxxxx

Compiled:编译数量。 Failed:编译失败数量 Invalid:不可用数量 Time:编译耗时 秒 FailedType:失败类型 FailedMethod:失败的方法


- gc回收统计   jstat -gc pid

```bash
[root@izadux3fzjykx7z ~]# jstat -gc  16418
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
8704.0 8704.0  0.0   5466.6 69952.0  29822.5   174784.0   73377.5   75008.0 71393.1 9472.0 8916.8     53    1.199   3      0.293    1.492
[root@izadux3fzjykx7z ~]# 

S0C:第一个幸存区的大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
OC:老年代大小
OU:老年代使用大小
MC:方法区大小
MU:方法区使用大小
CCSC:压缩类空间大小
CCSU:压缩类空间使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间
FGC:老年代垃圾回收次数
FGCT:老年代垃圾回收消耗时间
GCT:垃圾回收消耗总时间

● 堆内存统计 jstat -gccapacity pid
[root@izadux3fzjykx7z ~]# jstat -gccapacity  16418
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
 87360.0  87360.0  87360.0 8704.0 8704.0  69952.0   174784.0   174784.0   174784.0   174784.0      0.0 1114112.0  75008.0      0.0 1048576.0   9472.0     53     3

NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量
S0C:第一个幸存区大小
S1C:第二个幸存区的大小
EC:伊甸园区的大小
OGCMN:老年代最小容量
OGCMX:老年代最大容量
OGC:当前老年代大小
OC:当前老年代大小
MCMN:最小元数据容量
MCMX:最大元数据容量
MC:当前元数据空间大小
CCSMN:最小压缩类空间大小
CCSMX:最大压缩类空间大小
CCSC:当前压缩类空间大小
YGC:年轻代gc次数
FGC:老年代GC次数

● 新生代gc统计 jstat -gcnew pid
[root@izadux3fzjykx7z ~]# jstat -gcnew   16418
 S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
8704.0 8704.0    0.0 5466.6  6  15 4352.0  69952.0  30899.8     53    1.199

S0C:第一个幸存区大小
S1C:第二个幸存区的大小
S0U:第一个幸存区的使用大小
S1U:第二个幸存区的使用大小
TT:对象在新生代存活的次数
MTT:对象在新生代存活的最大次数
DSS:期望的幸存区大小
EC:伊甸园区的大小
EU:伊甸园区的使用大小
YGC:年轻代垃圾回收次数
YGCT:年轻代垃圾回收消耗时间

jmap

以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多, 各种对象所占内存的大小等等。可以使用jmap生成Heap Dump
● jmap -heap 16418 打印heap空间的概要

[root@izadux3fzjykx7z ~]# jmap -heap 16418
Attaching to process ID 16418, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.171-b11

using thread-local object allocation.
Mark Sweep Compact GC

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 268435456 (256.0MB)
   NewSize                  = 89456640 (85.3125MB)
   MaxNewSize               = 89456640 (85.3125MB)
   OldSize                  = 178978816 (170.6875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
New Generation (Eden + 1 Survivor Space):         // 新生代区
   capacity = 80543744 (76.8125MB)                //分配的大小
   used     = 44269728 (42.218902587890625MB)     //使用
   free     = 36274016 (34.593597412109375MB)     //剩余
   54.96358351556143% used                        
Eden Space:                                     //伊甸园区
   capacity = 71630848 (68.3125MB)
   used     = 38671896 (36.880393981933594MB)
   free     = 32958952 (31.432106018066406MB)
   53.98776795159538% used
From Space:                                   //年轻代 幸存者1
   capacity = 8912896 (8.5MB)
   used     = 5597832 (5.338508605957031MB)
   free     = 3315064 (3.1614913940429688MB)
   62.80598359949448% used
To Space:                                     /年轻代 幸存者2
   capacity = 8912896 (8.5MB)
   used     = 0 (0.0MB)
   free     = 8912896 (8.5MB)
   0.0% used
tenured generation:                           //老年代
   capacity = 178978816 (170.6875MB)
   used     = 75138528 (71.65768432617188MB)
   free     = 103840288 (99.02981567382812MB)
   41.98179967846027% used

30511 interned Strings occupying 3634816 bytes.
● jmap -dump:live,format=b,file=/home/tess.dump 16418 产生一个HeapDump文件
● jmap -histo 16418 统计各个类的实例数目以及占用内存,并按照内存使用量从多至少的顺序排列。

jinfo

查看目标 Java 进程的参数,如传递给 Java 虚拟机的参数
● jinfo 16418

jcmd

可以用来实现前面除了jstat 之外所有命令的功能。

标签:used,MB,性能,调优,Linux,大小,jstat,root,16418
From: https://www.cnblogs.com/chihaoyuIsnotHere/p/17289764.html

相关文章

  • 在Linux部署Redis代理Twemproxy实现数据分片
    前言本文主要讲述Redis代理Twemproxy安装过程。Twemproxy是推特开源用于Memcached和Redis的轻量级代理。这里以0.5.0版本为例。我们可以通过取模、随机、一致性哈希等算法将数据分散在多个Redis服务来实现水平扩展。但是客户端直连就需要跟每个Redis服务产生连接,......
  • 在Linux部署ElasticJob-Lite-UI运维控制台
    前言ElasticJob-Lite-UI是任务的分布式调度解决方案(ElasticJob-Lite)搭配的可视化运维控制台。运维控制台和ElasticJob-Lite并无直接关系,是通过读取作业注册中心(Zookeeper)数据展现作业状态,或更新注册中心数据修改全局配置。它具有这些功能:登录安全控制;注册中心、事件追踪数据源管......
  • 在Linux部署Etcd集群
    前言目前解决分布式系统下数据强一致性的主要算法理论是Paxos和Raft,偏向CAP定理一致性(Consistency)、可用性(Availability)、分区容错性(Partitiontolerance)中的CP。Raft在容错和性能方面和Paxos相当,不同之处在于它将问题分解成相对独立的子问题,逻辑较为清晰,更易于理解。关于Raft......
  • MYSQL大批量数据插入的性能问题
    批处理rewriteBatchedStatements=true项目原来使用的大批量数据插入方法是Mybatis的foreach拼接SQL的方法。我发现不管改成MybatisBatch提交或者原生JDBCBatch的方法都不起作用,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法。这对于常......
  • 在Linux部署单机Redis完整过程
    前言本文以redis-6.2.5为例,讲述在Linux系统下单机Redis下载、编译、打包、安装为服务、启动和访问的整个过程。安装环境为LinuxCentOS64,本文用的7.5版本.下载编译目录在当前目录soft/redis下,最终服务可执行程序在/opt/soft/redis6中。准备工作#查看是否有文件下载......
  • 在Linux部署Apollo配置中心
    前言这篇是参考官网文档总结的Apollo分布式部署方式,包含具体步骤、资源和相关脚本,也在必要的地方给出了资料来源。通过Apollo-中文文档-部署架构可以了解到单机、集群和高可用部署架构的最佳实践方式。安装步骤本篇实践是在Linux系统,使用Apollo1.9.1版本为例,要求环境包含......
  • linux Tun/Tap 虚拟网卡
    一、TUN、TAP虚拟网卡的工作原理:+----------------------------------------------------------------+|||+--------------------++--------------------+|||UserApplicationA|......
  • 在Linux安装Kafka监控系统EFAK
    前言EFAK(EagleForApacheKafka)是一个简单、高性能的Kafka集群监控系统,实现了监控、可视化操作Topic/Zookeeper、SQL查询、告警等功能,它以前的名字叫KafkaEagle。我们重点看看如何安装以及简单使用它。kafka版本支持:0.8.2.x,0.9.x,0.10.x,0.11.x,1.x,2.x.支持平台:Mac......
  • 在Linux安装Maven
    前言Linux系统安装、配置Maven步骤和相关资源地址,以3.8.2版本为例。安装下载解压#备用地址清华镜像https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.8.2/binaries/apache-maven-3.8.2-bin.tar.gzecho"创建下载、编译目录">/dev/nullmkdir-p~/soft/......
  • Linux 基础
    Linux基础1.安装虚拟机网络类型#1.桥接模式 上网不需要经过其他路由,上网速度快,ip数量少,容易跟同一网段的主机ip冲突。 #2.仅主机模式 只能与宿主机进行交互,并不能上网。 #3.NAT模式 ip多,独立的网段。上网需要经过VMnet8网卡。下载虚拟机官网地址https://centos.org......