0

0

Linux上性能异常定位以及性能监控

高洛峰

高洛峰

发布时间:2016-11-08 10:25:36

|

1783人浏览过

|

来源于php中文网

原创

   引言:大多数的服务都是跑在linux上的,linux现在也已经到了一个很广泛的应用,但是仍然会有很多问题出现,我们就来讨论下我们性能监控的指标,性能监控无非就是从i/o,内存,cpu,tcp连接数,网络,进程或者线程来出发,使用到的命令有iostat,vmstat,sar,mpstat,netstat,ss,iftop,free,pstree/ps,pidstat,top,(uptime)下面来进一步深入下吧.

   一,磁盘I/O(iostat)

   我们的机器上有很多的数据是存储在磁盘上的,我们读取的很多数据都是要和磁盘交互的,但是磁盘同时又是一个低速设备,很多时候会发生阻塞,所以磁盘I/O的监控很重要。我们使用iostat来诊断磁盘的情况。使用的机器是腾讯云主机。

892670031-581ee02140c15_articlex.png

ps:该设备每秒的传输次数,表示每秒多少个I/O请求

Blk_read/s:每秒从设备读取到的数据量

Blk_wrtn/s:每秒向设备写入的数据量

Blk_read:读取的总数据量

Blk_wrtn:写入的总数据量

%user:代表用户态进程使用CPU的负载

%nice:代表优先级进程使用的CPU负载

%system:代表内核态进程使用的CPU负载

%iowait:代表CPU等待I/O时,CPU的负载

%steal:代表被偷走的CPU负载情况,这个在虚拟化技术中会用到

%idle:代表空闲的所占用的CPU负载情况

iostat还有一个常用的参数选项-x,表示扩展的信息

892670031-581ee02140c15_articlex.png

rrqm/s:每秒这个设备相关的读取请求有多少被Merge(多个I/O合并的操作)了

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了

r/s:每秒发送到设备的读请求数

w/s:每秒发送到设备的写请求数

rsec/s:每秒读取设备扇区的次数

wsec/s:每秒写入设备扇区的次数

avgrq-sz:平均请求扇区的大小

avgqu-sz:平均请求队列的长度

await:每一个I/O请求的处理的平均时间(等待时间)

r_await:每一个读I/O请求的处理的平均时间

w_await:每一个写I/O请求的处理的平均时间

svctm:表示平均每次I/O操作的服务时间。如果svctm值和await值很接近,则表示I/O几乎没有等待,如果await的值远高于svctm的值,则表示I/O队列等待太长

%util:在统计的时间内总共有多少的时间用于处理I/O操作,即被消耗的CPU的百分比。例如统计时间间隔是1s,那么这个设备有0.65s在处理I/O,有0.35s处于空闲。那么这个设备的%util=0.65/1=65%,一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)

   二,内存(free)

   在Linux系统中我们查看内存使用情况。使用free命令来查看

892670031-581ee02140c15_articlex.png

第一行的信息(我们可以认为从操作系统层面看待)

total:总物理内存大小

used:已经分配的大小

free:没有被分配的大小

shared:共享内存的大小,主要用于IPC通信

buffers:用于块设备的缓冲

cached:用于文件内容缓冲,也就是缓存

"缓存"就是在内存中划分一块区域,作为进程和硬盘之间的缓冲区,进程将数据写入缓存中,当那些数据需要读取的时候,就直接去"高速路"缓存中读取,而不会去"土路"硬盘中读取,这样大大的加快性能

这里buffer实际上是存储了我们数据的元数据(包括目录名字,文件大小,文件存储块,修改时间,权限等),而cache则存放了我们最近读取过的文件。

第三行信息(我们可以认为从应用程序层面看待)

这里的-/+ buffers/cache分别为 -buffers/cache  和  +buffers/cache  两部分

-buffers/cache = used(第一行)-buffers-cached   实际上是当前程序上"真实使用"的"物理内存"

+buffers/cache = buffers+cached      意思就是暂时"借给"系统作为"缓冲区"使用的内存大小

used=(+buffers/cached)+(-buffers/cached)

所以从应用程序层面看,可用内存=free memory+buffers+cached

详细信息我们可以通过下面这种方式查看.

  ~ cat /proc/meminfo 

MemTotal:        1020128 kB

MemFree:          670772 kB

Buffers:           97780 kB

Cached:           100980 kB

SwapCached:            0 kB

Active:           164988 kB

Inactive:         117296 kB

Active(anon):      83536 kB

Inactive(anon):      160 kB

Active(file):      81452 kB

Inactive(file):   117136 kB

Unevictable:           0 kB

Mlocked:               0 kB

SwapTotal:             0 kB

SwapFree:              0 kB

Dirty:                92 kB

Writeback:             0 kB

AnonPages:         83504 kB

Mapped:            17500 kB

Shmem:               172 kB

Slab:              46696 kB

SReclaimable:      28652 kB

SUnreclaim:        18044 kB

KernelStack:        1744 kB

PageTables:         2636 kB

NFS_Unstable:          0 kB

Bounce:                0 kB

WritebackTmp:          0 kB

CommitLimit:      510064 kB

Committed_AS:     343800 kB

VmallocTotal:   34359738367 kB

VmallocUsed:        7112 kB

红技shop网上购物系统
红技shop网上购物系统

红技SHOP是一款智能化的通用型网络商城系统,取市面上众多的同类商城系统之精华,去除其它同类商品的不足之处和复杂烦琐的无用功能,用红技独有研发技术不断地加以提炼,使系统体积小而功能全面所有功能都能发辉作用。红技SHOP无论在系统稳定性、代码优化、运行效率、负荷能力、安全性能、功能可操控性和程序可维护性等方面都居国内外同类网上购系统商品的领先者。红技SHOP是专业的网络商城的WEB软件开发单位,因为

下载

VmallocChunk:   34359727304 kB

HardwareCorrupted:     0 kB

AnonHugePages:     36864 kB

HugePages_Total:       0

HugePages_Free:        0

HugePages_Rsvd:        0

HugePages_Surp:        0

Hugepagesize:       2048 kB

DirectMap4k:        8184 kB

DirectMap2M:     1040384 kB

   三,CPU(dstat,mpstat)

   首先我们使用dstat命令来查看下我们的CPU情况,他能够实时的输出我们的信息,

892670031-581ee02140c15_articlex.png

每2秒输出一次,一共输出10次

cpu:hiq、siq分别为硬中断和软中断次数

system:int、csw分别为系统的中断次数(interrupt)和上下文切换次数(context switch)。

-c:表示只显示我们的CPU信息

-m:表示只显示我们的内存信息

-p:表示只显示我们的进程信息

-n:表示只显示我们的网络信息

我们想以什么为什么优先顺序查看,可以在后面加下列参数

892670031-581ee02140c15_articlex.png

mpstat

892670031-581ee02140c15_articlex.png

%user      在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程  (usr/total)*100
%nice      在internal时间段里,nice值为负进程的CPU时间(%)   (nice/total)*100
%sys       在internal时间段里,内核时间(%)       (system/total)*100
%iowait    在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
%irq       在internal时间段里,硬中断时间(%)     (irq/total)*100
%soft      在internal时间段里,软中断时间(%)     (softirq/total)*100
%idle      在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100

   四,TCP连接数(ss,netstat)

   ss是Socket  Statistics的缩写,顾名思义ss命令就是用来获取sockets的信息,他可以显示和netstat类似的内容,但是他比netstat更快更高效,而且显示更为详细的有关TCP连接信息。当我们的sockets连接数非常大的时候,无论是我们使用netstat命令还是在内核中查看连接数cat /proc/net/tcp的时候都会很缓慢。

   ss快速的原因就是他利用了TCP协议中的tcp_diag,tcp_diag是一个用于分析和统计的模块,他可以获取到Linux内核中的第一手信息,这个就确保了ss的高效性。

   我们可以对netstat和ss做个对比,有图有真相嘛

892670031-581ee02140c15_articlex.png

892670031-581ee02140c15_articlex.png

   netstat命令的时间显然比ss命令的时间慢多了

   netstat命令  

892670031-581ee02140c15_articlex.png

我们可以看到系统中守护进程的连接状态信息以及监听到的端口号

-t:表示TCP的连接

-u:表示UDP的连接

-n:表示以数字的形式显示信息

-p:表示显示监听的端口号

查看系统中守护进程的监听状态

892670031-581ee02140c15_articlex.png

我们可以看到State状态显示

ss命令

  查看当前服务器的网络连接统计: ss -s 

892670031-581ee02140c15_articlex.png

其他ss的用法和netstat用法相同

   五,网络(iftop)

   使用iftop -i eth0

892670031-581ee02140c15_articlex.png

使用Ctrl+c退出,退出显示

892670031-581ee02140c15_articlex.png

我们可以使用-i参数监听不同的网卡流量信息,在iftop的哪个界面我们可以使用按p来查看端口流量信息

892670031-581ee02140c15_articlex.png

   六,进程信息(ps/pstree,top,pidstat)

  我们使用pstree来查看下我们的进程树,所有的进程都是init进程的子进程 

892670031-581ee02140c15_articlex.png

ps命令

查看具体的进程,比如MySQL进程我们可以使用ps aux mysqld或者ps -elf mysqld这种方式,这两种本质上没有什么区别,因为Linux继承的是Unix的一些思想,一个是Unix的Sys-v风格,一个是BSD的风格

892670031-581ee02140c15_articlex.png

我们可以详细的看到他的信息

pidstat命令

我们可以使用pidstat来查看每一个进程的pid的状态信息,以及他所占的CPU信息

892670031-581ee02140c15_articlex.png

综合显示(vmstat,top,sar)

892670031-581ee02140c15_articlex.png

我们看到内存,交换分区,I/O,CPU,以及进程上下文切换次数

top命令

892670031-581ee02140c15_articlex.png

在这个界面下:

按m按照内存使用大小排序显示

按P按照CPU使用大小排序显示 

按M按照常驻留内存大小排序

按k表示杀死某个进程

sar命令

892670031-581ee02140c15_articlex.png

   有时候我们可能需要统计下我们的Linux启动了多长时间,我们可以使用uptime命令来显示这个信息,top也可以显示

   uptime命令

892670031-581ee02140c15_articlex.png

top命令显示

892670031-581ee02140c15_articlex.png

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

178

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

35

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

79

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

2

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

4

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

24

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

122

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

72

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Webpack4.x---十天技能课堂
Webpack4.x---十天技能课堂

共20课时 | 1.4万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 812人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号