4 系统稳定性

2020-01-08  本文已影响0人  格林哈

1 日志分析常用命令

1.1 日志分析脚本

2 监控指标

2.1 load

uptime
13:46:03 up 44 days, 19:22,  2 users,  load average: 5.84, 5.79, 5.72

2.2 cpu 利用率

top | grep Cpu
%Cpu(s): 19.4 us,  7.2 sy,  0.0 ni, 73.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu(s): 11.6 us,  3.3 sy,  0.0 ni, 84.7 id,  0.3 wa,  0.0 hi,  0.1 si,  0.0 st

2.3 磁盘剩余空间

df -h
文件系统                          容量  已用  可用 已用% 挂载点
/dev/mapper/cl_docker--temp-root  3.7T  1.5T  2.3T   39% /
devtmpfs                           63G     0   63G    0% /dev
tmpfs                              63G     0   63G    0% /dev/shm
tmpfs                              63G  955M   62G    2% /run
tmpfs                              63G     0   63G    0% /sys/fs/cgroup
/dev/sda1                        1014M  264M  751M   26% /boot
/dev/mapper/cl_docker--temp-home  5.0G   33M  5.0G    1% /home

# du -d 1 -h /home
12K     /home/test
12K     /home/test2
24K     /home

2.4 网络traffic 关注网络的流量,清楚各个节点的阈值和水位

 sar -n DEV 1 1
Linux 3.10.0-957.10.1.el7.x86_64 (docker-temp)  2020年09月22日  _x86_64_        (16 CPU)

14时16分56秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
14时16分57秒 vethf141128      0.00      0.00      0.00      0.00      0.00      0.00      0.00
14时16分57秒 vethe06a4e8      0.00      0.00      0.00      0.00      0.00      0.00      0.00
14时16分57秒 veth093cd59      0.00      0.00      0.00      0.00      0.00      0.00      0.00
14时16分57秒 vethf018391      0.00      0.00      0.00      0.00      0.00      0.00      0.00
14时16分57秒 vethd6c0573      1.00      1.00      0.07      0.05      0.00      0.00      0.00
14时16分57秒 veth36e24fe      0.00      0.00      0.00      0.00      0.00      0.00      0.00

2.5 磁盘I/O

iostat -d -k
Linux 3.10.0-957.10.1.el7.x86_64 (docker-temp)  2020年09月22日  _x86_64_        (16 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda             136.27       708.67      1560.08 2745167173 6043292329
scd0              0.00         0.00         0.00       1028          0
dm-0            201.44       708.66      1560.08 2745125602 6043288082
dm-1              0.00         0.00         0.00       2456          0
dm-2              0.00         0.00         0.00       1513       2138

2.6 内存使用

free -h
              total        used        free      shared  buff/cache   available
Mem:           125G        110G        1.5G        684M         13G         13G
Swap:          257G         57G        200G

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 7  0 60982964 959440      0 14354452    8    9    45    99    0    0 25  5 68  1  0

3 性能优化

3.1 前端 YSlow 网页性能分析的浏览器插件

3.2 方法响应时间

3.2.1 测试环境可以重现 用StopWatch 测试具体是哪个步骤耗时进行优化
    @Test
    public void testStopWatch() throws InterruptedException {
        StopWatch stopWatch = new StopWatch();
        stopWatch.start("测试1");
        Thread.sleep(1000);
        stopWatch.stop();
        stopWatch.start("测试2");
        Thread.sleep(200);
        stopWatch.stop();
        System.out.println(stopWatch.prettyPrint());

    }
// 输出
StopWatch '': running time = 1199763500 ns
---------------------------------------------
ns         %     Task name
---------------------------------------------
1000120600  083%  测试1
199642900  017%  测试2

3.2.2 测试环境不能重新,btrace 进行调试
#1, BTRACE_HOME
BTRACE_HOME D:\softwareStudy\btrace2.0\btrace-bin

#2, path 加
%BTRACE_HOME%\bin

# 测试
C:\Users\weepal>btrace --version
BTrace v.2.0.0 (15dcb82b539b4c6fab72b01da8ead18a5b8f71a0)
@BTrace
public class BtraceTimeTest {
    @TLS private static long startTime = 0;

    @OnMethod(
            clazz="com.wp.ecs.controller.login.DjgLoginRelatedController",
            method="codeLogin",location = @Location(Kind.ENTRY)
    )
    public static void start() {
        startTime = timeMillis();
    }


    @OnMethod(
            clazz = "com.wp.ecs.controller.login.DjgLoginRelatedController",
            method = "codeLogin",
            location = @Location(Kind.RETURN)
    )
    public static void end(@ProbeClassName String pcn,
                               @ProbeMethodName String pmn,
                               AnyType[] args
    ) {
        long timecost = timeMillis() - startTime;
        println(Strings.strcat("time taken : ",str(timecost)));
        printArray(args);
    }
}

# 输出
time taken : 246
[com.wp.ecs.filter.AesKeyAllWrapper@3953e8d, 21312, 10816A7EDADAE81ADC6E21, 2, ]

3.2.3 Java程序优化

3.2.4 GC优化

#堆初始大小
-Xms10880M
#堆最大值
-Xmx10880M
#输出GC相关信息
 -verbose:gc 
 #指定GC日志
 -Xloggc:F:\company\公司项目\ECS2\trunk\ECS2\logs\gc.log 
 #输出GC详情
 -XX:+PrintGCDetails
 #日志中会输出GC的时间戳 会多打印gc发生时间
 -XX:+PrintGCDateStamps
 #发生内存溢出时自动的生成堆内存快照
 -XX:+HeapDumpOnOutOfMemoryError
 #生成堆内存快照路径
 -XX:HeapDumpPath=F:\company\公司项目\ECS2\trunk\ECS2\logs
 #使用Parallel Scavenge + Parallel Old,追求吞吐量的的最佳配合
-XX:+UseParallelOldGC
上一篇下一篇

猜你喜欢

热点阅读