阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux性能分析和优化命令介绍

75次阅读
没有评论

共计 3030 个字符,预计需要花费 8 分钟才能阅读完成。

导读 CPU 是操作系统稳定运行的根本,CPU 的速度与性能在很大程度上决定了系统整体的性能,因此,CPU 数量越多、主频越高,服务器性能也就相对越好。

一般互联网的项目都是部署在 linux 服务器上的,如果 linux 服务器出了问题,那么咱们平时学习的高并发,稳定性之类的是没有任何意义的,所以对 linux 性能的把握就显得非常重要,当然很多同学可能觉得这些是运维同学的事情,但是我不这么认为,不管你是架构师,还是 crud boy,对项目有个全局的掌控是一项非常重要的基本素质,所以总结了这篇文章,希望对您有用,如果您觉得我写的还不错,看完记得点个赞,点个再看哦。咱们废话不用多说,直接进入正题。

影响 linux 服务器性能的因素
cpu

CPU 是操作系统稳定运行的根本,CPU 的速度与性能在很大程度上决定了系统整体的性能,因此,CPU 数量越多、主频越高,服务器性能也就相对越好。

内存

内存的大小也是影响 Linux 性能的一个重要的因素,内存太小,系统进程将被阻塞,应用也将变得缓慢,甚至失去响应; 内存太大,导致资源浪费。

磁盘 IO

磁盘的 I / O 性能直接影响应用程序的性能,在一个有频繁读写的应用中,如果磁盘 I / O 性能得不到满足,就会导致应用停滞。好在现今的磁盘都采用了很多方法来提高 I / O 性能,比如常见的磁盘 RAID 技术。

网络

Linux 下的各种应用,一般都是基于网络的,因此网络带宽也是影响性能的一个重要因素,低速的、不稳定的网络将导致网络应用程序的访问阻塞,而稳定、高速的网络带宽,可以保证应用程序在网络上畅通无阻地运行。幸运的是,现在的网络一般都是千兆带宽或光纤网络,带宽问题对应用程序性能造成的影响也在逐步降低。

常用的 linux 系统性能监控的命令
uptime(系统整体性能评估)

Linux 性能分析和优化命令介绍

这里需要注意的是:load average 这个输出值,这三个值的大小一般不能大于系统 CPU 的个数

那么如何查看 cpu 的个数呢?

查看系统 cpu 的信息

cat /proc/cpuinfo 中的信息

其中 cpu cores 即为 cpu 的核数

也可以用 cat /proc/cpuinfo |grep “cores”|uniq 直接查看

cat /proc/cpuinfo |grep "cores"|uniq
cpu cores : 2
cpu 的性能评估 - 利用 vmstat 命令监控 cpu
vmstat 2 10 (每 2 秒监控一次 监控 10 次)

Linux 性能分析和优化命令介绍

procs

r 表示运行和等待 cpu 时间片的进程数,这个值如果长期大于 cpu 的个数,则需要增加系统 cpu

b 表示等待资源的进程数

CPU

us 列显示了用户进程消耗 CPU 时间百分比,us 比较高的时候,说明用户进程消耗 cpu 的时间多,如果长期大于 50%,就需要优化程序和算法

sy 列显示了内核进程消耗的 cpu 时间百分比,sy 值较高的时候,说明内核消耗的 cpu 资源很多

根据经验,us+sy 的参考值为 80%,如果 us+sy 大于 80% 说明可能存在 CPU 资源不足。

利用 sar 命令监控系统 cpu

sar 命令会增加系统开销 但是影响不大

安装 sar 命令:

yum install sysstat

u 显示系统所有 cpu 在采样时间内的负载状态 ) 图片 %user:用户进程消耗 cpu 的时间百分比:

sar -u 3 5

Linux 性能分析和优化命令介绍

%nice:运行正常进程所消耗 cpu 的百分比

%system:系统消耗 cpu 时间百分比

%iowait:IO 等待所占用 cpu 时间百分比

%steal:内存在相对紧张的环境下 pagein 强制对不同页面进行的 steal 操作

%idle:cpu 处在空闲时间的百分比

利用 free 指令监控内存
free -m

查看以 M 为单位的内存使用情况

Linux 性能分析和优化命令介绍

一般有这样一个经验公式:

应用程序可用内存 / 系统物理内存 >70% 时,表示系统内存资源非常充足,不影响系统性能。

应用程序可用内存 / 系统物理内存 <20% 时,表示系统内存资源紧缺,需要增加系统内存。

20%< 应用程序可用内存 / 系统物理内存 <70% 时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

利用 vmstat 监控内存

Linux 性能分析和优化命令介绍

swpd 表示切换到内存交换去的内存数量 (k),如果 swpd 的值不为 0,或者比较大,但是 si,so 的值长期为 0,这种情况不用担心,不会影响性能

free 表示空闲的物理内存数量

buffer 表示 buffers cache 的内存数量,一般对设备的读写才需要缓冲

cache 表示 page cached 的内存数量。一般作为文件系统 cached,频繁访问的文件都会被 cached,如果 cache 值较大,说明 cached 的文件较多,如果此时 IO 中的 bi 比较小,说明文件系统效率比较好

si 表示由磁盘调入内存,也就是内存进入内存交换区的数量

so 表示由内存调入磁盘,也就是内存交换区进入内存的数量 一般情况下,so si 的值都为 0。如果 si so 的值长期不为 0,则表示系统内存不足,需要增加内存

磁盘 IO 性能评估 -iostat
iostat -d 2 10

Linux 性能分析和优化命令介绍

Blk_reads/s  每秒读取的数据块数

Blk_wrtn/s   每秒写入的数据块数

Blk_read     读取的所有块数

Blk_wrtn     写入的所有块数

这几个值没有标准 如果长期都很大 肯定是不正常的

利用 sar 评估磁盘性能
sar -d 2 5

await 平均每次设备 I / O 操作的等待时间 (毫秒)

svctm 平均每次设备 I / O 操作的服务时间 (毫秒)

%util 一秒中有百分之几的时间用于 I / O 操作

评判标准

正常情况下 svctm 应该是小于 await 的,svctm 的值和磁盘性能,cpu 内存等都有关系

如果 svctm 的值和 await 的值相近表示几乎没有 I / O 等待,磁盘性能很好,如果 await 的值远高于 svctm,表示 I / O 队列等待时间太长,系统上的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题

%util 越小越好,如果 %util 接近 100% 表示磁盘产生的 I / O 请求太多,I/ O 系统已经满负载在工作,此时可以通过优化程序或者更换更快的磁盘来解决问题

网络性能评估

通过 ping 命令检测网络的连通性。

通过 netstat -i 组合检测网络接口状况。

通过 netstat -r 组合检测系统路由表信息。

通过 sar -n 组合显示系统的网络运行状态 (sar -n DEV 5 3)。

常用分析:

查看 tcp 连接数最多的 ip:

sudo netstat -pant | grep ":22" | awk '{print $5}' | awk -F":" '{print $4}' |sort|uniq -c|sort -nr

解释:

awk -F”:” ‘{print $4}’ 表示把结果的第 4 列用: 号分割

sort -nr 排序,- n 以数值大小排序,- r 倒序,从大到小。

uniq -c 删除重复的行,- c 表示加上每行出现的次数。

netstat 命令是一个监控 TCP/IP 网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

netstat -pant

参数 -p:显示正在使用 Socket 的程序识别码和程序名称;

参数 -a:显示所有连线中的 Socket;

参数 -n:直接使用 ip 地址,而不通过域名服务器;

参数 -t:显示 TCP 传输协议的连线状况。

提取访问 nginx 服务器最多的 10 个 ip。

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n10

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计3030字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中