Java Linux环境服务器变慢时的诊断思路与性能评估

前言

对于Linux下,服务器变慢后,对我们应进行的诊断思路,予以记录!

在这里插入图片描述

模拟Linux环境下服务器变慢情况,示例代码:

package com.kqli.oom;

import java.util.Random;

public class HeapSpaceDemo {
    public static void main(String[] args) {
    	int i = 0;
        while (true) {
            System.out.println(new Random().nextInt(1000) + ",这是第" + (++i) + "次");
        }
    }
}

Linux下执行命令:

javac -d HeapSpaceDemo.java
java com/kqli/oom/HeapSpaceDemo

一、查看整机情况:top

可查看当前CPU,内存占用与负载均衡等各项情况,按1可以查看当前cpu状态(常用参数top -Hp)

在这里插入图片描述

top命令主要关注:

  • COMMAND:命令
  • %CPU:CPU占用
  • %MEM:内存占用
  • load average:负载均衡,分别表示,系统1分钟、5分钟与15分钟的平均负载值(三个值相加/3 * 100%若高于60%则表示系统负载压力大)

uptime,系统性能命令的精简版,简略打印出当前用户数,负载均衡情况等

在这里插入图片描述

二、查看cpu情况:vmstat -n 2 3

1、vmstat -n 2 3

vmstat -n 2 3每两秒采样一次,共采样三次

在这里插入图片描述

vmstat主要关注:

  • procs下的r(Runntime Process)与b(Blocking process)
  • cpu下的us(User)与sy(System)

在这里插入图片描述

2、查看所有CPU核信息:mpstat -P ALL 2(ubuntu上不可用)

在这里插入图片描述

ubuntu上不可用

在这里插入图片描述

3、查看每个进程使用的cpu的用量分解信息:pidstat -u 1 -p 进程编号(ubuntu上不可用)

在这里插入图片描述

ubuntu上不可用

在这里插入图片描述

三、查看内存情况:free -m

应用程序可用内存/系统物理内存>70%内存充足

应用程序可用内存/系统物理内存<20%内存不足,需要增加内存

20%<应用程序可用内存/系统物理内存<70%内存基本够用

1、free -m

free精确K值
free -g 粗略M值
free -m 精确M值

在这里插入图片描述

2、pidstat -p 进程号 -r 采样间隔秒数(ubuntu上不可用)

在这里插入图片描述

四、查看硬盘情况:df -h

-h 用人类理解的单位大小描述

在这里插入图片描述

五、查看磁盘IO:iostat(ubuntu上不可用)

1、磁盘性能评估:iostat -xdk 2 3

看%util

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、pidstat -d 采样间隔秒数 -p 进程号(ubuntu上不可用)

在这里插入图片描述

六、查看网络IO:ifstat 1

默认要下载

在这里插入图片描述
在这里插入图片描述

ifstat 1:每秒1次采样

在这里插入图片描述

总结:生产环境中CPU占用过高问题定位与分析思路

在这里插入图片描述

1、top命令找出CPU占比最高的应用程序进程

在这里插入图片描述

2、ps -ef | grep 【COMMAND】 | grep -v grep或jps -l进一步定位此应用进程所在包名

jps -l

在这里插入图片描述

ps -ef | grep java | grep -v grep

在这里插入图片描述

3、定位到具体某线程:ps -mp 进程号 -o THREAD,tid,time

-m显示所有的线程
-p pid进程使用cpu的时间
-o 该参数后是用户自定义格式

ps -mp 5734 -o THREAD,tid,time
找到占CPU最多的线程ID

在这里插入图片描述

4、将十进制线程ID转换为十六进制格式(英文小写格式)

5735(十进制)== 1667(十六进制)

5、定位到某行代码:jstack 【进程id】 | grep 【tid十六进制小写英文格式】 -A60

jstack 【进程id】 | grep 【tid十六进制小写英文格式】 -A60

-A打印出前多少行

jstack 5734 | grep 1667 -A60

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值