系列九(实战)、生产环境服务器变慢,请你谈谈诊断思路和性能评估?

一、生产环境服务器变慢,诊断思路和性能评估

1.1、概述

        Linux对于后端程序员来说并不陌生,但是结合生产环境服务器变慢的性能诊断和问题排查可能了解的就没那么多了,很多程序员的日常主要工作还是结合需求进行编码,至于Linux中如何排查服务器性能变慢可能就没那么了解了,下面结合自己的工作实践,为大家演示Linux中究竟如何排查?用到了哪些参数?带着这个疑问,开始下面的案例演示。如果帮助到了你,请点赞 + 关注 + 收藏 + 评论!

1.2、常用参数

(1)整机:top(uptime,系统性能命令的精简版);

(2)CPU:

1.3、前置准备

(1)将LinuxMainApp.java上传至 /applications目录并带包编译

javac -d . LinuxMainApp.java

(2)带包运行

/*** @Author : 一叶浮萍归大海* @Date: 2023/12/22 14:39* @Description: 该代码将上传至Linux的 /applications 目录,通过 运行该程序来演示Linux中如何排查服务器性能变慢*/
public class LinuxMainApp {public static void main(String[] args) {while (true) {System.out.println("欧耶,今天星期五!"+ new Random().nextInt(33334444));}}}

1.4、参数详解

1.4.1、整机

概述:

        top命令用于查看整机的性能情况,如下所示:

        

题外话:右上角标红的字段的意思是什么?

        load average俗称系统的负载均衡,这三个字段分别表示系统1分钟、5分钟、15分钟的平均负载值,如果三者的值相加,然后除以3,再乘以100%,结果大于60%,那么表明当前的系统压力比较大,需要开发介入。

uptime:

        该指令为top指令的精简版,也可以查看当前系统的负载情况,用法如下:

        

1.4.2、CPU

我的虚拟机配置:

        

概述:

        vmstat指令用于查看CPU的信息(包括但是不限于),例如:

                        

指令详解:

        一般情况下vmstat指令需要配合2个数字参数进行使用,参数1为采样的时间间隔(单位:秒),参数2为采样的次数。

        procs:

                (1)r:运行和等待CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,我当前配置的是1(如上),整个系统的运行队列不能超过总核数的2倍,否则代表当前系统                                压力过大;

                (2)b:等待资源的进程数,例如:正在等待磁盘I/O、网络I/O的进程数;

        cpu:

                (1)us:用户进程消耗CPU时间的百分比,值越高代表用户进程消耗的CPU时间多,如果长期大于50%,需要开发优化程序;

                (2)sy:内核进程消耗CPU时间的百分比;

                (3)us + sy:参考值为80%,如果大于80%,说明可能CPU不足;

        id:                

                处于空闲的CPU百分比;

        wa:

                系统等待I/O的CPU时间百分比;

额外:

        (1)查看所有的CPU核信息: mpstat -P ALL 2

        

        (2)每个进程使用cpu的用量分解信息:

                语法:pidstat -u 1 -p 进程编号

                说明:此处的1是间隔的时间(单位:秒),可以自定义

                

1.4.3、内存

概述:

        free指令用于查看应用程序可用的内存数,以下3个指令都可以查看,即:free(单位:字节)、free -g(单位:G)、free -m(单位:MB,最精确,推荐!)

        

经验:

        (1)应用程序可用内存 / 系统物理内存 > 70%时,内存充足;

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

        (3)20% < 应用程序可用内存 / 系统物理内存 < 70%时,内存基本够用;

内存额外:

        语法:pidstat -p 进程号 -r 采样间隔秒数

        

1.4.4、硬盘

概述:

        df指令用于查看当前硬盘的使用情况,指令为:df、df -h(推荐)。

        

1.4.5、磁盘I/O

概述:       

        iostat指令用于查看当前系统的写入和写出信息,常用操作:iostat -xdk 2 3

        

参数详解:

        (1)rkB/s:每秒读取数据量;

        (2)wkB/s:每秒写入数据量;

        (3)svctm:请求的平均响应时间(单位:毫秒);

        (4)await:请求的平均等待时间(单位:毫秒);

        (5)util:1s钟有百分之几的时间用于I/O操作,接近100%时,需要优化程序或者增加磁盘;

注意事项:

        (1)rkB/s、wkB/s 会根据系统应用的不同会有不同的值,但是规律不是不变的,遵循:长期、超大数据读写肯定不正常,此时需要优化程序读取;

        (2)svctm如果和await的值很接近,表示几乎没有I/O,意味着磁盘性能好;

        (3)如果await的值远大于svctm,则表明I/O队列等待太长,需要优化程序或者更换磁盘;                

额外:

        语法:pidstat -d 采样间隔秒数 -p 进程号

        

1.4.6、网络I/O

概述:

        ifstat命令用于查看当前网络I/O情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/293505.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

State of PostgreSQL 2023 报告解读

基于 PostgreSQL 内核的时序数据库厂商 Timescale 发布了一年一度的 State of Postgres 2023 报告。 Timescale 介绍 简单先介绍一下 Timescale 这家公司的历史。它最早是提供了一个 PG 的插件&#xff0c;引入了 Hypertable 这个概念&#xff0c;来高效地处理时序数据&…

【Amazon 实验②】Amazon WAF功能增强之使用Cloudfront、Lambda@Edge阻挡攻击

文章目录 一、方案介绍二、架构图三、部署方案1. 进入Cloud9 编辑器&#xff0c;新打开一个teminal2. 克隆代码3. 解绑上一个实验中Cloudfront 分配绑定的防火墙4. 使用CDK部署方案5. CDK部署完成6. 关联LambdaEdge函数 四、方案效果 一、方案介绍 采用 LambdaEdge DynamoDB 架…

Zookeeper的学习笔记

Zookeeper概念 Zookeeper是一个树形目录服务&#xff0c;简称zk。 Zookeeper是一个分布式的、开源的分布式应用程序的协调服务 Zookeeper提供主要的功能包括&#xff1a;配置管理&#xff0c;分布式锁&#xff0c;集群管理 Zookeeper命令操作 zk数据模型 zk中的每一个节点…

【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1&#xff1a;使用Docker搭建LAMP环境实战案例2&#xff1a;使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web&#xff0c;那么&#xff0c;需要先来学习网站的搭建。搭建网站是每一个Web安全学习…

深入理解依赖反转原则(DIP)

依赖反转原则是一个比较重要的架构原则&#xff0c;从定义上看是要依赖于抽象&#xff0c;不要依赖于细节&#xff0c; 这个听起来很简单&#xff0c;好像加个接口就完事了&#xff0c;大家的service都是一个接口配一个实现类&#xff0c;是不是依赖倒置呢&#xff1f;很显然不…

【原理图PCB专题】原理图图纸锁定/解锁与PCB文件加密方式

在工作中我们会遇到需要冻结原理图进行评审和加密图纸防止被他人盗用的需求。那么在OrCAD Capture中如何对图纸进行锁定与解锁,如何在Allegro中对PCB工程进行加密呢? 原理图锁定与解锁 打开原理图,在图纸中单击右键,选择lock/unlock就可以进行锁定与解锁。 锁定时图纸图…

第一部分 数理逻辑

目录 什么是命题 注意&#xff1a; 例1 下列句子中那些是命题&#xff1f; 联结词 例2 将下列命题符号化. 注意&#xff1a; 例4 设 p&#xff1a;天冷&#xff0c;q&#xff1a;小王穿羽绒服&#xff0c;将下列命题符号化 例5 求下列复合命题的真值 例如 真值表: 例&#xff1…

k8s集群核心概念 Pod进阶

k8s集群核心概念 Pod进阶 一、场景 Pod在kubernetes集群中是核心资源对象之一&#xff0c;前期我们已经在《kubernetes极速入门》课程中讲解了Pod创建及Pod删除方法&#xff0c;但是实际企业应用中&#xff0c;Pod使用远比我们想像复杂&#xff0c;本次课程我们接着为大家讲解…

代码随想录第三十八天(一刷C语言)|零钱兑换II组合总数和 IV

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 一、零钱兑换II 思路&#xff1a;参考carl文档 1、确定dp数组以及下标的含义&#xff1a;凑成总金额j的货币组合数为dp[j]。 2、确定递推公式&#xff1a;dp[j] 就是所有的dp[j - coins[i…

第11章 GUI Page400~402 步骤二 画直线

运行效果&#xff1a; 源代码&#xff1a; /**************************************************************** Name: wxMyPainterApp.h* Purpose: Defines Application Class* Author: yanzhenxi (3065598272qq.com)* Created: 2023-12-21* Copyright: yanzhen…

设计模式:循序渐进走入工厂模式

文章目录 前言一、引入二、简单工厂模式1.实现2.优缺点3.扩展 三、工厂方法模式1.实现2.优缺点 四、抽象工厂模式1.实现2.优缺点3.使用场景 五、模式扩展六、JDK源码解析总结 前言 软件设计模式之工厂模式。 一、引入 需求&#xff1a;设计一个咖啡店点餐系统。 设计一个咖啡类…

两种方法解决win10开机慢,经验分享

方法一&#xff1a; 1、按快捷键“winR”打开 运行窗口。 2、这时候输入“msconfig”后 &#xff0c;点击“确定”或者按“ENTER”键。 3、这时候会打开一个名为“系统配置”的窗口&#xff0c; 在“常规”选项框下 勾选“有选择的启动”下的“加载系统服务”和“加载启动项”。…