LINUX基础培训十三之系统性能管理

发布时间:2024年01月22日
前言、本章学习目标?
  1. 熟悉LINUX中的各类系统性能
  2. 了解影响Linux系统性能的因素
  3. 掌握系统性能分析常用工具的使用
  4. 了解常见性能问题的分析

一、认识Linux系统性能

评价 Linux 系统性能的好坏,大致可以从 Linux 完成任务的有效性、稳定性以及响应速度等方面进行考量。线上业务,可能经常会遇到系统不稳定、响应速度慢等问题。

例如,在 Linux 系统搭建了一个 Web 服务,就可能出现网页无法打开、打开速度慢等现象。这里,操作系统在完成某个任务时,与系统自身设置、网络拓扑结构、路由设备、接入设备、物理线路等多个方面都密切相关,任何一个环节出现问题,都会影响整个系统的性能。

对于 Linux 系统来说,当运行应用程序出现问题时,要从应用程序本身、操作系统、服务器硬件和网络环境等方面综合排查,深度剖析问题出现在哪个部分,才能有针对性地解决性能问题。

二、Linux性能指标有哪些?

当看到性能指标时,你会首先想到什么呢?我相信“高并发”和“响应快”一定是最先出现在你脑海里的两个词,而它们也正对应着性能优化的两个核心指标——“吞吐”和“延时”。这两个指标是从应用负载的视角来考察性能,直接影响了产品终端的用户体验。跟它们对应的,是从系统资源的视角出发的指标,比如资源使用率、饱和度等。

性能指标是衡量系统性能的评价标准,常用的系统性能指标包括:响应时间、并发用户/并发、点击率、吞吐量、TPS/QPS、PV/UV;Linux服务器常用的性能指标包括:CPU使用率、内存占用率、磁盘IO、网络带宽延迟、系统平均负载等。

三、影响Linux系统性能的因素

CPU
CPU 是操作系统稳定运行的根本,CPU 的速度与性能很大一部分决定了系统整体的性能,因此 CPU 数量越多、主频越高,服务器性能也就相对越好。反之,cpu空闲使用率越低,系统性能越差。


内存
内存的大小也是影响 Linux 性能的一个重要的因素。内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应;内存太大,会导致资源浪费。
Linux 系统采用了物理内存和虚拟内存的概念,虚拟内存虽然可以缓解物理内存的不足,但是占用过多的虚拟内存,应用程序的性能将明显下降。要保证应用程序的高性能运行,物理内存一定要足够大,但不应过大,否则会造成内存资源的浪费。


磁盘读写(I/O)能力
磁盘的 I/O 能力会直接影响应用程序的性能。比如说,在一个需要频繁读写的应用中,如果磁盘 I/O 性能得不到满足,就会导致应用的停滞。


网络带宽
Linux 下的各种应用基于网络进行交互,因此网络带宽也是影响性能的一个重要因素,低速的、不稳定的网络将导致网络应用程序的访问阻塞;而稳定、高速的带宽,可以保证应用程序在网络上畅通无阻地运行。

四、Linux系统性能分析的步骤

1、选择指标评估应用程序和系统的性能;
2、为应用程序和系统设置性能目标;
3、进行性能基准测试;
4、性能分析定位瓶颈;
5、优化系统和应用程序;
6、性能监控和告警。
?

五、系统性能分析常用监控工具

1、CPU篇

CPU篇示例:
1)使用sar查看系统 CPU 的整体负载状况,每 3 秒统计一次,统计 5 次,可以执行如下命令:

[root@localhost ~]# sar -u 3 5
Linux 2.6.32-431.el6.x86_64 (localhost) ? ? 10/25/2019 ? ? _x86_64_ ? ?(1 CPU)
06:18:23 AM ? ? CPU ? ? %user ? ? %nice ? %system ? %iowait ? ?%steal ? ? %idle
06:18:26 AM ? ? all ? ? 12.11 ? ? ?0.00 ? ? ?2.77 ? ? ?3.11 ? ? ?0.00 ? ? 82.01
Average: ? ? ? ?all ? ? ?8.83 ? ? ?0.00 ? ? ?2.09 ? ? ?0.63 ? ? ?0.00 ? ? 88.46

此输出结果中,各个列表项的含义分别如下:
%user:用于表示用户模式下消耗的 CPU 时间的比例;
%nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例;
%system:系统模式下消耗的 CPU 时间的比例;
%iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;
%steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;
%idle:CPU 空闲时间比例。
?

2)使用mpstat查看系统 CPU 的负载状况
mpstat命令提供各处理器活动的统计数据,所有数据均来自/proc。
默认mpstat仅显示系统整体概要。下例显示各个处理器的报告,报告间隔为一秒钟


CPU列显示逻辑处理器ID,all表示所有处理器平均值
%usr列显示执行user space的进程CPU使用率
%sys 列显示执行kernel space的进程CPU使用率
%idle列显示处理器空闲时间所占百分比

2、内存篇

?

内存篇示例:
free命令可以列出可用和已用的物理内存和swap内存
-b、-k、-m、-g 选项分别以字节、KB、MB或GB单位输出.-s选项将显示一个参数,该参数代表刷新间隔秒数。例如,free -s 1代表每隔1秒刷新━次

# free -m
? ? ? ? ? ? ? total ? ? ? ?used ? ? ? ?free ? ? ?shared ?buff/cache ? available
Mem: ? ? ? ? ?31661 ? ? ? ? 389 ? ? ? 28598 ? ? ? ? ?25 ? ? ? ?2674 ? ? ? 30994
Swap: ? ? ? ? 16383 ? ? ? ? ? 0 ? ? ? 16383

buff/cache和available列中数值接近零表明内存不足。如果可用内存超过总内存的20%,已用内存接近总内存,则这些数值表示系统正常。

3、磁盘IO篇

IO篇示例:
iostat命令显示各磁盘的I/O统计数据,并提供工作负载、利用率和饱和度等指标
.iostat使用内核计数器来收集统计信息,负载很低
iostat -c会显示CPU使用报告,iostat -d会显示磁盘I/O使用报告。iostat -y省略自系统启动以来的统计数据。-z选项省略任何无活动的设备。

- tps:每秒处理的事务数,又称IOPS.
- kB_read/s:每秒读取的KB数
.-kB_wrtn/s:每秒写入的KB数
- kB_read:已读取的总KB数
- kB_wrtn:已写入的总KB数
?

4、网络篇

?

?

网络篇示例:
1、使用sar查看系统网络的整理负载状况

[root@localhost ~]# sar -n ?DEV 1 1
Linux 3.10.0-957.el7.x86_64 (vincent) ? 11/09/2022 ? ? ?_x86_64_ ? ? ? ?(8 CPU)
11:24:44 PM ? ? IFACE ? rxpck/s ? txpck/s ? ?rxkB/s ? ?txkB/s ? rxcmp/s ? txcmp/s ?rxmcst/s
11:24:45 PM ? ? ens32 ? ? ?3.00 ? ? ?0.00 ? ? ?0.21 ? ? ?0.00 ? ? ?0.00 ? ? ?0.00 ? ? ?0.00

IFACE ?本地网卡接口的名称
rxpck/s ?每秒钟接受的数据包
txpck/s ?每秒钟发送的数据库
rxKB/S ?每秒钟接受的数据包大小,单位为KB
txKB/S ?每秒钟发送的数据包大小,单位为KB
rxcmp/s ?每秒钟接受的压缩数据包
txcmp/s ?每秒钟发送的压缩包
rxmcst/s ?每秒钟接收的多播数据包?
?

六、系统性能常用的压测工具

CPU
sysbench: 是一款开源的多线程性能测试工具, 可以执行 CPU/内存/线程/IO/数据库等方面的性能测试. 数据库目前支持 MySQL/Oracle/PostgreSQL。
unixbench:一个用于测试unix系统性能的工具,也是一个比较通用的benchmark。


内存
memtester:Memtester主要是捕获内存错误和一直处于很高或者很低的坏位, 其测试的主要项目有随机值,异或比较,减法,乘法,除法,与或运算等等. 通过给定测试内存的大小和循环次数, 可以对系统现有的内存进行项目的测试。
stream:Stream测试是内存测试中业界公认的内存带宽性能测试基准工具,stream由Virginia University提供,通过生成四种不同模式下的内存读写操作,用于测试高性能计算机的内存带宽。


磁盘
1、利用dd来进行测试:
time dd if=/dev/zero of=test bs=1M count=4096 ?//用top和iostat查看wa%及写硬盘速度
2、使用fio命令进行测试:
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎。


网络
Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量。


?七、本章实验

1、使用工具监测系统各类性能指标。
2、分别找出系统中cpu使用率和内存使用top10进程。
?

文章来源:https://blog.csdn.net/vincent0920/article/details/135739478
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。